SLB服务由Keepalived+HAProxy两个软件组成。Keepalived保证了HAProxy的可靠性,HAProxy为后端服务提供负载均衡的功能。
1 安装环境准备
实际地址根据自己的现场情况来定,虚拟地址与物理地址在同一个网段。
机器A物理地址 | 192.168.48.131 |
---|---|
机器B物理地址 | 192.168.48.132 |
虚拟地址 | 192.168.48.140 |
2 Keepalived 安装
第一步 选择目录一个解压安装包
tar –zxvf keepalived-2.0.15.tar.gz
解压完后会有一个keepalived_installed的目录
第二步 配置文件Keepalived.conf,放到keepalived_installed/etc/keepalived目录下面
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script check_port { script “/home/root/slb/Keepalived/keepalived_installed/conf/check_service.sh” interval 3 weight -2 fall 5 rise 2 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 55 priority 250 authentication { auth_type PASS auth_pass 654321 } advert_int 2 virtual_ipaddress { 192.168.48.140 } track_script { check_port } |
---|
主备机房的配置相同。
注意参数
Script “/keepalived_installed/conf/check_haproxy.sh” | 检测HAProxy服务的脚本,这里填写检测脚本所在目录的绝对路径 |
---|---|
state BACKUP | 节点状态,主机和备机都设置成backup状态 |
interface ens33 | 物理机器网卡的名称,根据真实情况而定。 |
virtual_router_id 55 | 路由号代表同一组,主备机器路由号相同。 |
priority 250 | 优先级,主备优先级设置相同。(与state配合,实现非抢占模式) |
virtual_ipaddress{192.168.48.140} | 虚拟IP地址,主备机器相同 |
第三部 配置检测脚本check_service.sh,脚本放在keepalived_installed/conf目录下面
#!/bin/bash
##判断进程是否存在
count_process=`ps -ef|grep haproxy}|grep -v grep|wc -l`
#判断端口号是否存在
count_port=`netstat -ano|grep LISTEN|grep 8000|wc -l|wc -l`
##只需要判断进程名称的情况
if [ -n $count_process ] && [ -z $count_port ] then
if [ $count_process -eq 0 ] then
exit
##只需要判断端口的情况
if [ -z $count_process ] && [ -n $count_port ] then
if [ $count_port -eq 0 ]
then
exit
##同时判断进程名称和端口的情况
if [ -n $count_process ] && [ -n $count_port ]then
if [ $count_process -gt 0 ] && [ $count_port -gt 0 ]then
exit
第四步 启动keepalived
进入…keepalived_installed/sbin 目录
./keepalived -f /home/root/slb/Keepalived/keepalived_installed/conf/keepalived.conf 配置文件位置使用绝对目录
(1) 两台机器上的Keepalived启动以后会在其中的一台机器上产生一个VIP
类似下图所示
(2) 查看日志 /var/log/message
更换VIP
(1) 停掉keepalived服务(杀死keepalived进程)
(2) 修改keepalived.conf配置文件
virtual_ipaddress {192.168.48.140}参数
(3) 进入…/keepalived_installed/sbin 目录
执行 ./keepalived -f /home/root/slb/Keepalived/keepalived_installed/conf/keepalived.conf启动服务
3 HAProxy 安装
第一步 选择目录解压 安装包
tar –zxvf haproxy-1.9.7.tar.gz
解压完后会产生一个haproxy_installed目录
第二步 配置文件haproxy.cfg,放到目录的haproxy_installed/conf目录中
参数注意
log 127.0.0.1 local3 | 配置Haproxy的日志等级为local3类型,相当于error类型 |
---|---|
listen stats bind *:8000 | HA自带的服务监控统计服务绑定的端口 |
listen stats stats uri /admin?stats | 监控统计页面访问uri |
listen stats stats auth admin:admin | 访问监控统计页面的账号密码 |
frontend app0 | 前端名称 自定义 |
frontend mode http | 前端使用的 |
frontend bind*:5000 | 前端绑定5000端口(根据实际情况) |
frontend use_backend app0 | 前端需要转发给后端的名称 |
backend app0 | 后端名称 自定义 |
backend mode http | 后端使用协议 |
cookie | 回话保持 |
blance | 负载均衡调度算法 |
server | 后端真实的服务器 |
第三步 系统日志配置文件 (可选操作)
(1) 创建文件 /etc/rsyslog.d/haproxy.conf
$ModLoad imudp
$UDPServerRun 514
Local3.* /var/log/haproxy.log #local3接口对应日志输出文件,对应haproxy.cfg中的local3
重启系统日志服务 systemctl restart rsyslog
(2) 修改/etc/sysconfig/rsyslog文件中的參數 sed -i ‘/^SYSLOGD_OPTIONS/c SYSLOGD_OPTIONS=”-r -m 0 -c 2”‘ /etc/sysconfig/rsyslog
(3) 重新启动rsyslog
Systemctl restart rsyslog
第四步 启动HAProxy服务
./haproxy -f /home/root/slb/haproxy_installed/conf/haproxy.cfg 配置文件位置,使用绝对目录
第五步 检测服务启动是否正常
(1) ps –ef|grep haproxy 查看进程是否存在
(2)如果配置了日志可以查看日志中的信息
(3)访问haproxy自身的监控统计页面
监控统计页面 http://ip:8000/admin?stats 账号密码 admin admin
成功访问空监控页面则说明启动成功
常见问题:
两台高可用的SEE更换了服务器IP地址,如何修改ha的代理配置?
(1) 修改配置文件haproxy.cfg,找到代理配置
frontend app0 mode http bind *:5000 use_backend app0 backend app0 mode http cookie app_haproxy insert indirect nocache #使用cookie实现会话保持 balance roundrobin #负载均衡调度算法 轮询算法 server server1 192.168.217.151:8081 cookie server1 check inter 2000 rise 1 fall 2 server server2 192.168.217.152:8081 cookie server2 check inter 2000 rise 1 fall 2 |
---|
替换192.168.217.151,192.168.217.152为修改后的地址。
(2) 执行
./haproxy -f /home/root/slb/haproxy_installed/conf/haproxy.cfg -sf 进程号
重载服务
如果由两台变成了三台
(1) 修改配置文件haproxy.cfg
frontend app0 mode http bind *:5000 use_backend app0 backend app0 mode http cookie app_haproxy insert indirect nocache #使用cookie实现会话保持 balance roundrobin #负载均衡调度算法 轮询算法 server server1 192.168.217.151:8081 cookie server1 check inter 2000 rise 1 fall 2 server server2 192.168.217.152:8081 cookie server2 check inter 2000 rise 1 fall 2 server server3 192.168.217.153:8081 cookie server3 check inter 2000 rise 1 fall 2 |
---|
(2) 执行
./haproxy -f /home/root/slb/haproxy_installed/conf/haproxy.cfg -sf 进程号
重载服务