Mysql部署高可用-haproxy安装
在192.168.1.150节点上执行,添加proxy用户
[root@mysql-150-master ~]# useradd haproxy [root@mysql-150-master ~]#
在192.168.1.151节点上执行,添加proxy用户
[root@mysql-151-master ~]# useradd haproxy [root@mysql-151-master ~]#
下载haproxy
[root@mysql-150-master ~]# cd /usr/local/src [root@mysql-150-master src]# wget https://github.com/haproxy/haproxy/archive/v1.8.0.tar.gz [ <=> ] 2,048,221 682KB/s 用时 2.9s 2021-03-03 01:22:12 (682 KB/s) - “v1.8.0.tar.gz” 已保存 [2048221] [root@mysql-150-master src]#
解压haproxy源代码
[root@mysql-150-master src]# cd /usr/local/src/ [root@mysql-150-master src]# ll 总用量 2004 -rw-r--r--. 1 root root 2048221 3月 3 01:22 v1.8.0.tar.gz [root@mysql-150-master src]# tar -zxvf v1.8.0.tar.gz [root@mysql-150-master src]# ll 总用量 2008 drwxrwxr-x. 10 root root 4096 11月 27 2017 haproxy-1.8.0 -rw-r--r--. 1 root root 2048221 3月 3 01:22 v1.8.0.tar.gz [root@mysql-150-master src]#
HAProxy源码编译和安装
编译前需要查看centos 系统内核版本
[root@mysql-150-master src]# uname -a Linux mysql-150-master 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux [root@mysql-150-master src]#
本操作系统内核为3.10
,x86_64
[root@mysql-150-master src]# ll 总用量 2008 drwxrwxr-x. 10 root root 4096 11月 27 2017 haproxy-1.8.0 -rw-r--r--. 1 root root 2048221 3月 3 01:22 v1.8.0.tar.gz [root@mysql-150-master src]# cd /usr/local/src/haproxy-1.8.0/ [root@mysql-150-master haproxy-1.8.0]#
编译
[root@mysql-150-master haproxy-1.8.0]# make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64 gcc -Iinclude -Iebtree -Wall -m64 -march=x86-64 -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -DENABLE_POLL -DCONFIG_HAPROXY_VERSION=\"1.8.0\" -DCONFIG_HAPROXY_DATE=\"2017/11/26\" -c -o src/ev_poll.o src/ev_poll.c make: gcc:命令未找到 make: *** [src/ev_poll.o] 错误 127 [root@mysql-150-master haproxy-1.8.0]# ###报错是因为没有安装gcc,先安装gcc [root@mysql-150-master haproxy-1.8.0]# yum -y install gcc ###继续编译 [root@mysql-150-master haproxy-1.8.0]# make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64
安装
[root@mysql-150-master haproxy-1.8.0]# make install PREFIX=/usr/local/haproxy install -d "/usr/local/haproxy/sbin" install haproxy "/usr/local/haproxy/sbin" install -d "/usr/local/haproxy/share/man"/man1 install -m 644 doc/haproxy.1 "/usr/local/haproxy/share/man"/man1 install -d "/usr/local/haproxy/doc/haproxy" for x in configuration management architecture peers-v2.0 cookie-options lua WURFL-device-detection proxy-protocol linux-syn-cookies network-namespaces DeviceAtlas-device-detection 51Degrees-device-detection netscaler-client-ip-insertion-protocol peers close-options SPOE intro; do \ install -m 644 doc/$x.txt "/usr/local/haproxy/doc/haproxy" ; \ done
赋权限,修改配置文件
[root@mysql-150-master haproxy-1.8.0]# cd /usr/local/haproxy [root@mysql-150-master haproxy]# ll 总用量 0 drwxr-xr-x. 3 root root 21 3月 3 01:34 doc drwxr-xr-x. 2 root root 21 3月 3 01:34 sbin drwxr-xr-x. 3 root root 17 3月 3 01:34 share [root@mysql-150-master haproxy]# pwd /usr/local/haproxy [root@mysql-150-master haproxy]# chown -R haproxy.haproxy * [root@mysql-150-master haproxy]# ll 总用量 0 drwxr-xr-x. 3 haproxy haproxy 21 3月 3 01:34 doc drwxr-xr-x. 2 haproxy haproxy 21 3月 3 01:34 sbin drwxr-xr-x. 3 haproxy haproxy 17 3月 3 01:34 share [root@mysql-150-master haproxy]#
创建配置文件haproxy.cfg
[root@mysql-150-master haproxy]# cd /usr/local/haproxy [root@mysql-150-master haproxy]# touch haproxy.cfg [root@mysql-150-master haproxy]# vi /usr/local/haproxy/haproxy.cfg global ##记日志的功能 log 127.0.0.1 local0 ## 设定每个haproxy进程所接受的最大并发连接数 maxconn 4096 ## 修改HAProxy的工作目录至指定的目录并在放弃权限之前执行 chroot/usr/local/haproxy user haproxy group haproxy ## 设置haproxy后台守护进程形式运行 daemon defaults ## 继承global中log的定义 log global option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 ## HAProxy的状态信息统计页面##VIP listen admin_status 192.168.1.155:48800 stats uri/admin-status ##统计页面 ## 设置统计页面认证的用户和密码,如果要设置多个,另起一行写入即可 stats auth admin:ruanjie@0511 mode http ## 启用日志记录HTTP请求 option httplog ## 用于定义通过关联“前端”和“后端”一个完整的代理,通常只对TCP流量有用 listen allmycat_service 192.168.1.155:8096 ##转发到 mycat 的 8066 端口,即 mycat 的服务端口 mode tcp option tcplog ## 后端服务状态检测 option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www ## 定义负载均衡算法,可用于"defaults"、"listen"和"backend"中,默认为轮询方式 balance roundrobin server mycat_150 192.168.1.150:8066 check port 48700 inter 5s rise 2 fall 3 server mycat_151 192.168.1.151:8066 check port 48700 inter 5s rise 2 fall 3 srvtimeout 20000 listen allmycat_admin 192.168.1.155:8097 ##转发到 mycat 的 9066 端口,及 mycat 的管理控制台端口 mode tcp option tcplog option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www balance roundrobin server mycat_150 192.168.1.150:9066 check port 48700 inter 5s rise 2 fall 3 server mycat_151 192.168.1.151:9066 check port 48700 inter 5s rise 2 fall 3 srvtimeout 20000
开启rsyslog的haproxy日志记录功能
### 检查rsyslog是否安装 [root@mysql-150-master haproxy]# yum –y install rsyslog 已加载插件:fastestmirror [root@mysql-150-master haproxy]# cd /etc/rsyslog.d/ [root@mysql-150-master haproxy]# touch haproxy.conf [root@mysql-150-master haproxy]# vi /etc/rsyslog.d/haproxy.conf ##内容如下: vi /etc/rsyslog.conf $ModLoad imudp $UDPServerRun 514 local0.* /var/log/haproxy.log
1、在#### RULES ####上面一行的地方加入以下内容:
# Include all config files in /etc/rsyslog.d/ $IncludeConfig /etc/rsyslog.d/*.conf #### RULES ####
2、在 local7.* /var/log/boot.log 的下面加入以下内容(增加后的效果如下):
# Save boot messages also to boot.log local7.* /var/log/boot.log local0.* /var/log/haproxy.log
保存,重启 rsyslog 服务
keepalived 安装
下载keepalived
[root@mysql-150-master home]# wget https://www.keepalived.org/software/keepalived-1.2.24.tar.gz
安装 keepalived 需要用到 openssl
[root@mysql-150-master home]# yum install gcc gcc-c++ openssl openssl-devel
解压,编译
###cpoer keepalived 安装包到/usr/local/src [root@mysql-150-master home]# cp keepalived-1.2.24.tar.gz /usr/local/src [root@mysql-150-master home]# cd /usr/local/src [root@mysql-150-master src]# ll drwxrwxr-x. 10 root root 4096 3月 3 01:34 haproxy-1.8.0 -rw-r--r--. 1 root root 601873 3月 3 12:55 keepalived-1.2.24.tar.gz -rw-r--r--. 1 root root 2048221 3月 3 01:22 v1.8.0.tar.gz ##解压 [root@mysql-150-master src]# tar -zxvf keepalived-1.2.24.tar.gz [root@mysql-150-master src]# cd keepalived-1.2.24 ###编译前,环境检查 [root@mysql-150-master keepalived-1.2.24]# ./configure --prefix=/usr/local/keepalived ### 编译并且安装 [root@mysql-150-master keepalived-1.2.24]# make && make installvrrp_iproute.c:42:33: 致命错误:linux/mpls_iptunnel.h:没有那个文件或目录 #include <linux/mpls_iptunnel.h> ^ 编译中断。 make[2]: *** [vrrp_iproute.o] 错误 1 make[2]: 离开目录“/usr/local/src/keepalived-1.2.24/keepalived/vrrp” make[1]: *** [all-recursive] 错误 1 make[1]: 离开目录“/usr/local/src/keepalived-1.2.24/keepalived” make: *** [all-recursive] 错误 1 [root@mysql-150-master keepalived-1.2.24]#
安装出现致命错误,安装中断
vrrp_iproute.c:42:33: 致命错误:linux/mpls_iptunnel.h:没有那个文件或目录 #include <linux/mpls_iptunnel.h> ^ 编译中断。 make[2]: * [vrrp_iproute.o] 错误 1 make[2]: 离开目录“/usr/local/src/keepalived-1.2.24/keepalived/vrrp” make[1]: * [all-recursive] 错误 1 make[1]: 离开目录“/usr/local/src/keepalived-1.2.24/keepalived” make: *** [all-recursive] 错误 1 [root@mysql-150-master keepalived-1.2.24]#