linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案

摘要:
同样的在172.28.5.8的备份服务器上也安装haproxy。

一、安装haproxy作为端口转发服务器(主服务器:172.28.5.4,备服务器:172.28.5.8,浮点IP为:172.28.5.6)

1、安装依赖包

yum -y install wget  gcc gcc-c++

1、下载

cd /usr/local/src

wget https://github.com/haproxy/haproxy/archive/v1.5-dev20.tar.gz

2、解压

tar - zvxf v1.5-dev20.tar.gz

cd haproxy-1.5-dev20

3、编译

查看内核版本
[root@localhost haproxy-1.5-dev20]# uname -a Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
make TARGET=linux310 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

4、配置文件

mkdir /etc/haproxy
touch /etc/haproxy/haproxy.conf
vim /etc/haproxy/haproxy.conf

global
log 127.0.0.1 local2 ###[err warning info debug]
chroot /usr/local/haproxy
pidfile /var/run/haproxy.pid ###haproxy的pid存放路径,启动进程的用户必须有权限访问此文件
maxconn 65535 ###最大连接数,默认4000
daemon

defaults
mode tcp
log global
timeout connect 20s
timeout server 60s
timeout client 60s
retries 3

listen stats
mode http
bind 0.0.0.0:8888 #监听端口
stats refresh 10s #统计页面自动刷新时间
stats uri /stats #统计页面url
stats realm Haproxy Manager #统计页面密码框上提示文本
stats auth admin:hl95smsjh #统计页面用户名和密码设置
stats hide-version #隐藏统计页面上HAProxy的版本信息

listen cmppv2
bind :7890 #监听端口
server s1 xxx.xxx.xxx.xxx:7890 #转发IP+端口

listen cmppv22
bind :7891 #监听端口
server s2 xxx.xxx.xxx.xxx:7891 #转发IP+端口

5、启动haproxy

ln -s /usr/local/haproxy/sbin/haproxy /usr/local/bin/haproxy -f /etc/haproxy/haproxy.conf

6、查看启动结果

ps -ef|grep ha

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第1张

启动成功

7、添加统计端口8888和我们测试用端口7890和7891到防火墙

firewall-cmd --zone=public --add-port=7890/tcp --permanent
firewall-cmd --zone=public --add-port=7891/tcp --permanent
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload

浏览器打开ip:8888/stats

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第2张

目前两个端口的当前连接数都是0,找一台机器telnet测试

[root@zabbix_server src]# telnet 172.28.18.104 7890Trying 172.28.18.104...
Connected to 172.28.18.104.
Escape character is '^]'.

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第3张

此时,7890端口对应的当前连接数为1

telnet 7891

[root@zabbix_server src]# telnet 172.28.18.104 7891Trying 172.28.18.104...
Connected to 172.28.18.104.
Escape character is '^]'.

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第4张

此时7891对应的连接为1。

同样的在172.28.5.8的备份服务器上也安装haproxy。

至此haproxy转发服务器配置完毕

二、安装keepalived做haproxy主备服务器高可用

在两台服务器上分别安装keepalived

1、安装依赖包

yum -y install wget  pcre*  openssl-devel  zlib

2、下载

cd /usr/local/src
wget http://www.keepalived.org/software/keepalived-1.3.4.tar.gz

3、解压

tar -zxvf keepalived-1.3.4.tar.gz
cd  keepalived-1.3.4

4、编译

./configure --prefix=/usr/local/keepalived-1.3.4
make && make install

5、配置文件

mkdir /etc/keepalived
touch /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf

global_defs {
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_script chk_haproxy { #调用外部的辅助脚本进行资源监控,并根据监控的结果状态能实现优先动态调整
script "/usr/local/keepalived-1.3.4/check_haproxy.sh"

timeout 10 #脚本执行超时设置为10秒,默认为2秒,采用默认值可能导致脚本还没有执行完就已经超时了,所以设置超时时间为10秒

interval 2 #每2秒检查执行一次
weight 2
fall 2 #如果连续两次检测为错误状态则认为服务部可用
rise 1 #检测一次成功就认为服务正常
}

vrrp_instance VI_1 { #配置虚拟路由实例
state MASTER #定义该节点为MASTER节点
interface em1 #定义VIP绑定的物理网卡
virtual_router_id 51 #设置虚路由拟路由id,同一集群的节点群必须相同
priority 150 #设定优先级
advert_int 1 #设定master与backup之间vrrp通告的时间间隔,单位是秒
#nopreempt #设定keepalived的切换模式,默认是抢占failover,这里是非抢占,没有启用
authentication { #定义验证方式与密码
auth_type PASS
auth_pass xxxxxx
}
#unicast_src_ip 172.28.18.104 #自己ip
#unicast_peer { ##单播模式
# 172.28.18.69 ##另一个ip
#}
virtual_ipaddress {
172.28.18.8
}
track_script { #用于追踪脚本执行状态,定义在vrrp_instance段中
chk_haproxy
}
}

将路径为/usr/local/keepalived-1.3.4/sbin/keepalived拷贝到/usr/sbin/下

[root@localhost sbin]# cp /usr/local/keepalived-1.3.4/sbin/keepalived /usr/sbin/

将路径为/usr/local/src/keepalived-1.3.4/keepalived/etc/init.d的文件keepalived拷贝到/etc/init.d下

cp /usr/local/src/keepalived-1.3.4/keepalived/etc/init.d/keepalived /etc/init.d/

将路径为/usr/local/keepalived-1.3.4/etc/sysconfig/keepalived的文件拷贝到/etc/sysconfig/keepalived

cp /usr/local/keepalived-1.3.4/etc/sysconfig/keepalived /etc/sysconfig/
/usr/local/keepalived-1.3.4/check_haproxy.sh用于检测haproxy进程是否存在,不存在的话,尝试启动haproxy,如果启动没有成功,则关闭自己服务器的keepalived服务文件内容如下
#!/bin/bash
COUNT=$(ps -C haproxy --no-header |wc -l)
echo$COUNT

if [ $COUNT -eq 0]
thenhaproxy -f /etc/haproxy/haproxy.conf 2>/dev/null
        #echo "重启haproxy"
        sleep 3COUNT=$(ps -C haproxy --no-header |wc -l)
        if [ $COUNT -eq 0]
        then
                #echo "停止keepalived"
                killall keepalived 2>/dev/null
fi fi

6、添加执行权限

chmod +x /etc/init.d/keepalived
chmod +x /usr/local/keepalived-1.3.4/check_haproxy.sh

7、添加keepalived到系统服务

chkconfig --add keepalived

8、启动

service keepalived start

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第5张

9、查看

service keepalived status

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第6张

启动成功

10、查看网卡的浮点IP设置

ip a

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第7张

设置成功

同样在备份服务器172.28.5.8上也安装keppalived服务,唯一不同的是keepalived配置文件

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}


vrrp_script chk_haproxy {  #调用外部的辅助脚本进行资源监控,并根据监控的结果状态能实现优先动态调整
   script "/usr/local/keepalived-1.3.4/check_haproxy.sh"
timeout 10 #脚本执行超时设置为10秒,默认为2秒,采用默认值可能导致脚本还没有执行完就已经超时了,所以设置超时时间为10秒 interval 2 #每2秒检查执行一次 weight 2 fall 2 #如果连续两次检测为错误状态则认为服务部可用 rise 1 #检测一次成功就认为服务正常 } vrrp_instance VI_1 { #配置虚拟路由实例 state BACKUP #定义该节点为BACKUP节点 interface em1 #定义VIP绑定的物理网卡 virtual_router_id 51 #设置虚路由拟路由id,同一集群的节点群必须相同 priority 95 #设定优先级 advert_int 1 #设定master与backup之间vrrp通告的时间间隔,单位是秒 #nopreempt #设定keepalived的切换模式,默认是抢占failover,这里是非抢占,没有启用 authentication { #定义验证方式与密码 auth_type PASS auth_type PASS auth_pass hl951234 } virtual_ipaddress { 172.28.5.6 } track_script { #用于追踪脚本执行状态,定义在vrrp_instance段中 chk_haproxy } }
state BACKUP     #定义该节点为BACKUP节点
priority 95      #设定优先级,备份服务器优先级低一些。主服务器设置的是100
启动备份服务器keepalived服务
linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第8张

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第9张

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第10张

启动成功,但是从节点会抢占VIP,说明keepalived节点之间通信失败,此时注意两个问题

1、Keepalived使用vrrp组播,默认地址是224.0.0.18,因此要配置防火墙允许通行vrrp协议,具体操作

iptables:

 vim /etc/sysconfig/iptables
添加
-A INPUT -d 224.0.0.18 -j ACCEPT
service iptables restart

firewalld:

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface em1 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --in-interface em1 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload

2、第一种方法添加了还是不行,则可能是上联交换机禁用了组播方式,可以修改keepalivd配置文件,在virtual_ipaddress上添加如下内容改为单播方式

unicast_src_ip 172.28.5.4#自己ip
unicast_peer { ##单播模式
172.28.5.8##另一个ip
}

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第11张

重启keppalived主从节点服务,此时从节点不会再抢占vip了。

三、测试高可用

1、关闭主服务器172.28.5.4的keepalived服务

service keepalived stop

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第12张

2、查看IP

ip a

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第13张

此时浮点IP已经解绑

再关闭172.28.5.4haproxy服务

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第14张

kill -9 37655

此时telnet172.28.5.4 7890,已经不能连接

但是telnet 172.28.5.6 7890 ,依然可以连接,说明172.28.5.6IP已经漂移到172.28.5.8的备份服务器上

3、恢复主服务器haproxy以及keepalived服务

service keepliaved start

keepliaved会自动监测haproxy服务,并重启

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第15张

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第16张

查看ip

ip a

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第17张

此时VIP已经成功漂移回主节点服务器,测试telnet 172.28.5.6 7890成功连接。

在从节点服务器运行

ip a

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案第18张

此时VIP已经解绑。

免责声明:文章转载自《linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nessus漏洞扫描教程之配置NessusAndroid开机logo修改方法 【转】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux使用PAM锁定多次登陆失败的用户(重置次数)原理后续补充----

  linux上的用户,如果用户连续3次登录失败,就锁定该用户,几分钟后该用户再自动解锁。Linux有一个pam_tally2.so的PAM模块,来限定用户的登录失败次数,如果次数达到设置的阈值,则锁定用户。 1、 vim /etc/pam.d/sshd    (远程ssh)   限制用户远程登录   在#%PAM-1.0的下面,即第二行,添加内容,一定...

windows用浏览器访问linux目录文件

背景:开发环境没有测试环境服务器的权限,但开发想上测试环境看日志或者配置之类的,测试不用新开一个账号,只要用以下命令, 前提是要有python3环境 python3 -m http.server 59999 端口自己任意配置,比如你要临时给etc下面目录所有文件的查看权限,先进入到opt目录,再使用以上命令 然后在windows机器上的浏览器输入你服务的i...

ubuntu安装配置telnet

1. sudo apt-get install xinetd telnetd 2. 安装成功后,系统也会有相应提示: sudo vi /etc/inetd.conf并加入以下一行 telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd 3. sudo vi /etc/xin...

HAProxy安装文档

HAProxy安装文档 目录 HAProxy安装文档 一、环境说明 二、安装配置 1.创建用户 2.安装 3.创建配置文件和启动文件 三、编辑配置文件 四、启动HAproxy 五、配置日志 1.配置rsyslog 2.创建haprxoy日志配置 3.开启远程日志 4.haproxy开启日志配置 5.重启rsyslog 和 haproxy 6....

Linux最大打开文件描述符数

1.    系统最大打开文件描述符数:/proc/sys/fs/file-max a.    查看 $ cat /proc/sys/fs/file-max 186405 2. 设置 a.    临时性 # echo 1000000 > /proc/sys/fs/file-max 2.    永久性:在/etc/sysctl.conf中设置 fs.fi...

Linux基础(Ubuntu16.04):安装vim及配置

1.进入终端  Ctrl + Alt +T 出现终端窗口 2.输入命令: sudo apt-get install vim-gtk 3.验证是否成功   安装完vim后查看命令 vi tab键,就会关联出所有vi开头的命令,看是否有vim,有则成功. 4.美化vim   输入命令:sudo vim /etc/vim/vimrc   注意: 必须加上sudo...