负载均衡的mariadb集群搭建
集群介绍:
Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。
主要功能:
- 同步复制
- 所有节点可以同时读写数据库
- 自动的节点成员控制,失效节点自动被清除
- 新节点加入数据自动复制
- 真正的并行复制,行级
- 用户可以直接连接集群,使用感受上与MySQL完全一致
优势:
- 因为是多主,所以不存在Slave lag(延迟)
- 不存在丢失交易的情况
- 同时具有读和写的扩展能力
- 更小的客户端延迟
- 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同
缺点:
- 不支持POP/SMTP协议
- 不支持SPDY协议
- 不支持HTTP cache功能。
- 重载配置的功能需要重启进程,虽然也是soft restart,但没有reaload更为平滑和友好。
- 多进程模式支持不够好
haproxy 的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen
1.global: (全局配置主要用于设定义全局参数,属于进程级的配置,通常和操作系统配置有关) 2.default : (配置默认参数,这些参数可以被用到frontend,backend,Listen组件) 在此部分中设置的参数值,默认会自动引用到下面的frontend、backend、listen部分中,因引,某些参数属于公用的配置,只需要在defaults部分添加一次即可。而如果frontend、backend、listen部分也配置了与defaults部分一样的参数,Defaults部分参数对应的值自动被覆盖。 3.frontend:( 接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend) frontend是在haproxy 1.3版本以后才引入的一个组件,同时引入的还有backend组件。通过引入这些组件,在很大程度上简化了haproxy配置文件的复杂性。forntend可以根据ACL规则直接指定要使用的后端backend 4.backend : (后端服务集群的配置,真实服务器,一个Backend对应一个或者多个实体服务器) 在HAProxy1.3版本之前,HAProxy的所有配置选项都在这个部分中设置。为了保持兼容性,haproxy新的版本依然保留了listen组件配置试。两种配置方式任选一中
5.Listen : (Fronted和backend的组合体) 比如haproxy实例状态监控部分配置
添加web监控
#defaults下添加并且修改端口号为80 stats refresh 30s stats uri /status stats realm baison-test-Haproxy stats auth admin:admin
配置步骤:
1.安装haproxy:yum install haproxy
2.编辑/etc/haproxy/haproxy.cfg
修改内容如下:
global log 192.168.254.40 local2 log 192.168.254.40 local3 notice chroot /var/lib/haproxy pidfile /var/run/haproxy.pid #进程文件存放位置 maxconn 4000 user haproxy group haproxy nbproc 1 #指定启动的haproxy进程个数,只能 defaults log global #引入global定义的日志格式 option tcplog #日志类型为tcp日志格式(httplog为http日志格式) option dontlognull#不记录健康检查日志信息 option redispatch # retries 3 #3次连接失败就认为服务器不可用 timeout client 1m #设置客户超时时间 timeout server 1m #设置服务器查实时间 maxconn 4000 #最大连接数 listen mariadb-galera bind 192.168.254.30:3399 #绑定haproxy代理IP mode tcp #(7层代理http,4层代理tcp) balance leastconn #设置负载均衡方式(默认为轮询roundrobin,leastconn为最小连接数模式) server db1 192.168.254.30:3306 check #添加监听的数据库集群的节点 server db2 192.168.254.31:3306 check server db3 192.168.254.39:3306 check
3.mysql --host 192.168.254.40 --port 3399 -uroot -proot #注意连接端口为3399,是haproxy服务器的监听端口
4.插入一条数据:
insert into students(name,age) value ('user1',19);
Query OK, 1 row affected (0.19 sec)
说明没有问题