MyCat-集群-HAProxy 启动访问 | 学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 快速学习 MyCat-集群-HAProxy 启动访问

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(三):MyCat-集群-HAProxy 启动访问 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/757/detail/13289


MyCat-集群-HAProxy 启动访问

内容介绍:

一、 启动访问

二、 集群结构图回顾

 

一、 启动访问

根据在 159 上的安装步骤,在 160 上同样也安装了 HAProxy , 以同样的步骤,安装并配置 HAProxy ,在 159 和 160 这两台服务器上,HAProxy 都已经安装并配置完成,在配置中涉及到很多配置项,其配置项的含义无需全部了解,主要是要了解需要修改哪些地方,针对 HAProxy ,这个软件中的配置文件当中的每一项的含义在下面的内容解析有详细的介绍,如下:

1 #g1obal 配置中的参数为进程级别的参数,通常与其运行的操作系统有关

2 g1oba1

3 #定义全局的 sys1og 服务器,最多可定义 2 个; 1oca10 是日志设备,对应于 /etc/rsys1og.conf 中的配置,默认收集 info 级别

日志

4 1og127.0.0.1 1oca10

5 #1og 127.0.0.1 local1 notice

6 #1og loghost loca10 info

7 #设定每个 haproxy 进程所接受的最大并发连接数;

8 maxconn 4096

9 #修改 HAproxy 工作目录至指定的目录并在放弃权限之前执行 chroot 操作,可以提升 haproxy 的安全级别

10 chroot /usr/1oca1/haproxy

11 #进程 ID 保存文件

12 pidfile/usr/data/haproxy/haproxy.pid

13 #指定用户 ID

14 uid 99

15 #指定组 ID

16 gid 99

17 #设置 HAproxy 以守护进程方式运行

18 daemon

19 #debug

20 #quiet

21 node mysq1-haproxy-01 ##定义当前节点的名称,用于 HA 场景中多 haproxy 进程共享同一个 IP 地址时

22 description mysq1-haproxy-01 ##当前实例的描述信息

23

24#defaults:用于为所有其他配置段提供默认参数,这默认配置参数可由下一个 "defaults" 所重新设定

25 defaults I

26 #继承 g1oba1 中的 1og 定义

27 1og global

28 #所使用的处理模式 (tcp:四层,http: 七层,health: 状态检杳,只返回 OK)

29 ### tcp: 实例运行干纯 tcp 模式,在客户端和服务器端之间将建立一个全双工的连接,且不会对 7 层报文做仟何类型的检查,此为

默认模式

30 ### http: 实例运行干 http 模式,客户端请求在转发至后端服务器之前将被深度分析,所有不与 RFC 模式兼容的请求都会被拒绝

31 ### health: 实例运行于 hea1th 模式,其对入站请求仅响应“OK”信息并关闭连接,且不会记录任何日志信息,此模式将用于相应

外部组件的监控状态检测请求

32 mode tcp

33 #当服务器负载很高的时候,自动结束掉当前队列处理时间比较长的连接

34 option abortonclose

35

36 #当使用了 cookie 时,haproxy 将会将请求的后端服务器的 serverID 插入到cookie 中,以保证会话的 session 持久性,而此时,后端服务器宕机,但是客户端的 cookie 不会刷新,设苦此参数,将会将客户请求强制定向到另外一个后端server 上,以保证服务的正常。

37 option redispatch

38 retries 3

39 前端的最大并发连接数(默认为 2000 )

40 maxconn 2000

41 # 连接超时(默认是毫秒,单位可以设置 us,ms.s.m,h.d )

42 timeout connect 5000

43 # 客户端超时时间

44 timeout client 50000

45 # 服务器超时时间

46 timeout server 50000

47

48 #1isten:用干定义通过关联“前端”和“后端”一个完整的代理,通常只对 TCP 流量有用

49 listen proxy_status

50 bind 0.0.0.0:48066 # 绑定端口

51 mode tcp

52 balance roundrobin # 定义负载均衡算法,可用干 "defaults"、"1isten" 和 "backend" 中,默认为轮询

53 #格式: server <name> <address> [:[port]] [param*]

54 # weight : 权重,默认为 1,最大值为 256,0 表示不参与负载均衡

55 # backup : 设定为备用服务器,仅在负载均衡场景中的其他 server 均不可以启用此 server

56 # check : 启动对此 server 执行监控状态检查,其可以借助于额外的其他参数完成更精细的设定

57 # inter :设定监控状态检查的时间间隔,单位为豪秒,默认为 2000,也可以使用 fastinter 和 downinter 来根据服

务器端专题优化此事件延迟

58 # rise :设置 server 从离线状态转换至正常状态需要检查的次数(不设置的情况下,默认值为 2)

59 # fal1 :设置 server 从正常状态转换至离线状态需要检查的次数(不设置的情况下,默认值为 3)

60 # cookie :为指定 server 设定 cookie 值,此外指定的值将会在请求入站时被检查,第一次为此值挑选的 server 将会

被后续的请求所选中,其目的在于实现持久连接的功能

61 # maxconn:  指定此服务器接受的最大并发连接数,如果发往此服务器的连接数目高干此处指定的值,其将被放器干请求队列,以 等待其他连接被释放

62 server mycat 1 192.168.192.157:8066 check inter 10s

63 server mycat2 192.168.192.158:8066 check inter 10s

64

65 #用来匹配接收客户所请求的域名,uri 等,并针对不同的匹配,做不同的请求处理

66 # HAProxy 的状态信息统计页面

67 frontend admin_stats

68 bind 0.0.0.0:8888

69 mode http

70 stats enable

71 option httplog

72 maxconn 10

73 stats refresh 30s

74 stats uri /admin

75 stats auth admin:123123

76 stats hide-version

77 stats admin if TRUE

并且这里也罗列了 HAProxy 作为一个负载均衡的策略,如下:

HAProxy 的负载均衡策略:

策略

含义

roundrobin

表示简单的轮循,即客户端美访问一次,请求轮循跳转到后端不同的节点机器上

Static-rr

基于权重轮循,根据权重轮循调度到后端不同节点

leastconn

加权最少连接,表示最少流量计者优先处理

source

表示根据请求源 IP,这个跟IP_hash 机制类似,使用其作为解决 session 问题的一种方法

uri

表示根据请求的 URL, 调度到后端不同服务器

url_param

表示根据请求的 URL 参数来进行调度

Har(name)

表示根据 HTTP 请求头来锁定每一次 HTTP 请求

Rdp-cookie(name)

表示根据 cookie(naamw)来锁定并哈希每一次 TCP 请求

此时两台 HAProxy 中的配置文件完成了,接下来需要启动它,启动 HAProxy 需要使用一个指令,就是 /usr/local/haproxy/sbin 可执行文件,在 sbin 中有一个脚本HAProxy,在执行这个脚本启动 HAProxy 时,还需要指定一份配置文件,指定配置文件需要跟上一个参数(-F),后面需要指定 /usr/local/haproxy/haproxy.conf, 也就是创建 HAPRoxy 的配置文件

(vim/usr/local/haproxy/haproxy.conf),

执行指令后会发现无任何结果输出,无任何结果输出说明启动成功,可通过 ps-cflgrop haproxy 进行搜索,若存在此节点则说明 haproxy 运行成功,如下图:

image.png

接下来在 160 这台服务器上执行相同的指令来启动 haproxy, 先通过 ps-cfgrep haproxy 查看其进程,如下图:

image.png

启动成功之后,若要验证是否启动成功,实际上还可以访问它的管理界面,访问管理界面需要通过浏览器来访问,之前操作中绑定的管理端口是 8888,访问时就要用 8888 端口来访问,后面的是 /admin 还是 /aaaabc 之类的是取决于 uri ,落之前的 uri 配置的是 /admin, 则访问时是 /admin,。当点击回车后,页面上需要输入用户名和密码,此用户名和密码也是之前的配置的(auth admin :123123),因此用户名是 admin,密码是 123123,如此操作就成功登陆到 HAProxy 的监控平台。同样的,由于 160 也安装了 HAProxy ,也可进行访问,用户名和密码如上(用户名是admin,密码是 123123),完成操作后,这两台 HAProxy 就已经安装配置并启动完成。

image.png

在此监控界面中,可观察到 HAProxy 的运行号、运行时长、以及当前系统的一些限制信息,还有其他的一些数据信息,在中间的表中展示了 HAproxy 负载均衡代理服务的状态( MyCat1 和 MyCat2 的状态信息),在其中包含当前的队列信息、当前会话的信息、以及当前 ao 的一些信息,还有一些警告信息。通过此界面实际上证明了 HAProxy 已经安装并且配置完成。

 

二、 集群结构图回顾

接下来看之前集群的结构图,此图中 HAProxy 已经安装完成,如果要通过此结构访问底层的数据,目前的情况下,客户端需要连接 HAProxy,通过 HAProxy 的负载均衡机制,来决定当前的请求转发到哪一台 MyCat 上,再由 MyCat 来决定当接收到请求后,要请求哪一台 MySQL 。接下来进行一个测试,如下:

image.png

要访问的是 HAproxy, HAproxy 的对外服务端口是 48066,MyCatd 的用户名是 root-p ,密码是 123456,执行完操作后会发现访问但是 159(HAProxy 所在的服务器),-p 48066 也是 HAOroxy,然而最终访问的是 MyCat ,实际上是 HAProry 接收到一个请求后会转发到后端的 MyCat ,接下来切换数据库到  ITCAST ,然后执行 slect * from usr, 执行完请求后是转发给了其中一台 MyCat ,原因是当前的客户端连接上此 MyCat ,请求就会转发给指定的 MyCat ,

注意:此处端口不是 8888,8888 是监控平台的端口。

image.png

接下来清空 157 和 158 上的 MyCat 日志,会发现  slect* 的请求到达了第一台 MyCat 上,原因是已经连接上此台 MyCat ,后面的请求就会发送到此台 MyCat 上。

若另一个客户端再次通过 HAProxy 连接上 MyCat ,实际上连接的是另一台 MyCat 。

回顾上述可知:通过 HAProxy 可以实现 MyCat 的负载均衡和集群,并且可以解决 MyCat 的单点故障,也就是说,当 157 上的服务器宕机,执行第一次查询,会发现零件丢失,在执行第二次查询可以查询到,原因是其进行了重试连接,连接请求至 158 上。

也就是相对于当其中一台 MyCat 停止工作,所有的请求到达 HAProxy 之后, HAProxy 会将此请求转发到另一台 MyCat 上。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
7月前
|
SQL 缓存 关系型数据库
myCat 9066管理端口常用命令
myCat 9066管理端口常用命令
95 0
|
7月前
|
存储 Shell Linux
ZooKeeper【部署 01】单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置+shell自动部署脚本(一篇入门zookeeper)
ZooKeeper【部署 01】单机版安装+配置+添加到service服务+开机启动配置+验证+chkconfig配置+shell自动部署脚本(一篇入门zookeeper)
648 0
|
负载均衡 关系型数据库 MySQL
Mycat需要安装在哪台服务器?
Mycat需要安装在哪台服务器?
173 0
|
存储 cobar 负载均衡
分布式部署:第二章:MyCat和Nginx部署
分布式部署:第二章:MyCat和Nginx部署
289 0
|
负载均衡 网络协议 关系型数据库
MyCat-集群-HAProxy 安装配置 | 学习笔记
快速学习 MyCat-集群-HAProxy 安装配置
MyCat-集群-HAProxy 安装配置 | 学习笔记
|
负载均衡 网络协议 关系型数据库
MyCat-集群-keepalived 启动及 haproxy 的高可用测试 | 学习笔记
快速学习 MyCat-集群-keepalived 启动及 haproxy 的高可用测试
MyCat-集群-keepalived 启动及 haproxy 的高可用测试 | 学习笔记
|
SQL 负载均衡 监控
MyCat-集群-两台 MyCat 的安装配置 | 学习笔记
快速学习 MyCat-集群-两台 MyCat 的安装配置
MyCat-集群-两台 MyCat 的安装配置 | 学习笔记
|
关系型数据库 MySQL Java
nacos集群+nginx+mysql持久化搭建
nacos集群+nginx+mysql持久化搭建
221 0
nacos集群+nginx+mysql持久化搭建
|
开发工具
Mycat启动失败解决方案
Bit Server VM warning: ignoring option MaxPermSize=64M; support was removed in 8.0
527 0
Mycat启动失败解决方案