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

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

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、编译

make TARGET=linux26 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 http
log global
timeout connect 20s
timeout server 60s
timeout client 60s
retries 3

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

listen cmppv2
bind :7890     #监听端口
mode tcp
log global
timeout connect 20s
timeout server 60s
timeout client 60s
retries 3
server s1 xxx.xxx.xxx.xxx:7890 #转发IP+端口

listen cmppv22
bind :7891     #监听端口
mode tcp
log global
timeout connect 20s
timeout server 60s
timeout client 60s
retries 3
server s2  xxx.xxx.xxx.xxx:7891  #转发IP+端口

5、启动haproxy

haproxy -f /etc/haproxy/haproxy.conf

6、查看启动结果

ps -ef|grep ha

启动成功

7、添加7890和7891到防火墙

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

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

firewall-cmd --reload

找一台机器telnet测试

连接成功

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

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

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

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

1、下载

cd /usr/local/src

wget http://www.keepalived.org/software/keepalived-1.3.4.tar.gz

2、解压

tar -zxvf keepalived-1.3.4.tar.gz

cd  keepalived-1.3.4

安装前需要的环境:

yum -y install wget

yum -y install pcre*

yum -y install openssl-devel

yum -y install zlib

3、编译

./configure --prefix=/usr/local/keepalived-1.3.4

make && make install

4、配置文件

mkdir /etc/keepalived

touch /etc/keepalived/keepalived.conf

vim keepalived.conf

! Configuration File for keepalived

global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
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.4.5/check_haproxy.sh"

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 100 #设定优先级
advert_int 1 #设定master与backup之间vrrp通告的时间间隔,单位是秒
#nopreempt #设定keepalived的切换模式,默认是抢占failover,这里是非抢占,没有启用
authentication { #定义验证方式与密码
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
172.28.5.6
}
track_script { #用于追踪脚本执行状态,定义在vrrp_instance段中

chk_haproxy
}
}

将路径为/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/keepalived

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

cp/usr/local/keepalived-1.3.4/etc/sysconfig/keepalived /etc/sysconfig/keepalived

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

if [ $COUNT -eq 0 ]
then
        haproxy -f /etc/haproxy/haproxy.conf
        echo "重启haproxy"
        sleep 3
        COUNT=$(ps -C haproxy --no-header |wc -l)
        if [ $COUNT -eq 0 ]
        then
                echo "停止keepalived"
                /etc/init.d/keepalived stop
        fi
fi

5、添加执行权限

chmod +x /etc/init.d/keepalived

chmod +x /usr/local/keepalived-1.4.5/check_haproxy.sh

6、添加keepalived到系统服务

chkconfig --add keepalived

7、启动

service keepalived start

8、查看

service keepalived  status

启动成功

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

ip a

设置成功

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

! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   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.4.5/check_haproxy.sh"
   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服务

启动成功

ip a

三、测试高可用

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

service keepalived stop

2、查看IP

ip a

此时浮点IP已经解绑

再关闭172.28.5.4haproxy服务

kill -9 37655

此时telnet 172.28.5.4 7890,已经不能连接

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

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

service keepliaved start

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

查看ip

ip a

成功绑定,但此时备份服务器一直接管服务,主服务器变为备份服务器,备份服务器变为主服务器,知道备份服务器下线为止。

 

原文地址:https://www.cnblogs.com/sky-cheng/p/10655767.html

时间: 2024-10-28 19:40:09

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

linux下用rinetd做端口转发

原文转自:http://blog.chinaunix.net/uid-345389-id-2131648.html 经常遇到端口转发的情况,用iptable是经常的,不过每次都需要查手册.看到菜包子的文章,感觉还不错,测试感觉很好用. 端口转发映射的程序叫rinetd,并没有发现版本之说,只有一个下载地址.直接manke编译安装即可. [[email protected] tmp]# tar xvfz rinetd.tar.gz rinetd/rinetd/getopt.hrinetd/rine

linux使用rinetd快速实现端口转发

linux下使用iptables实现端口转发,配置较为复杂,使用rinetd工具可以实现快速配置和修改端口转发. 例:本机ip:1.1.1.1 需要实现访问本机的8080端口,自动转发到2.2.2.2 80 下载软件: wget http://www.boutell.com/rinetd/http/rinetd.tar.gz 安装软件: tar xzvf rinetd.tar.gz cd rinetd make make install ps:执行make install时可能出现错误:缺少目录

Linux下的配置iptables防火墙增强服务器安全

Linux下的配置iptables防火墙增强服务器安全 实验要求 iptables常见概念 iptables服务器安装及相关配置文件 实战:iptables使用方法 例1:使用iptables防火墙保护公司web服务器 例2:使用iptables搭建路由器,通过SNAT使用内网机器上网 例3:限制某些IP地址访问服务器 例4:使用DNAT功能把内网web服务器端口映射到路由器外网 实验环境 iptables服务端:xuegod-63   IP:192.168.1.63 iptables客户端:x

Linux下使用Apache搭建Web网站服务器

Linux下使用Apache搭建Web网站服务器 实验目标 apache服务器常见概念 apache服务器安装及相关配置文件 实战: 例1:为公司内网搭建一个web服务器 例2:取消apache默认欢迎页: 例3:使用rpm搭建lamp 环境 例4, 使用别名,引用网站根目录以外的路径. 例6:打开软链接功能. 通过软件链接直接引用网站根目录以外的内容 例5,当一个目录下没有默认首页时,访问http://192.168.1.63/phpmyadmin/禁止显示目录列表 例7:通过用户认证的方式,

windows命令行下用netsh实现端口转发(端口映射)

微软Windows的netsh是一个命令行脚本实用工具.使用netsh工具 ,可以查看或更改本地计算机或远程计算机的网络配置.不仅可以在本地计算机上运行这些命令,而且可以在网络上的远程计算机上运行. 可以手动运行Netsh命令,或创建批处理文件或脚本实现过程的自动化.netsh提供了脚本功能,让您在批处理模式下针对指定的计算机,运行一组命令.利用netsh ,可以将配置脚本保存为文本文件,便于存档或用于配置其他的计算机. netsh命令已经推出很长时间,在Windows 2000/XP/2003

Linux下Socket编程的端口问题( Bind error: Address already in use )

Linux下Socket编程的端口问题( Bind error: Address already in use ) 在进行linux网络编程时,每次修改了源代码并再次编译运行时,常遇到下面的地使用错误: Bind error: Address already in use 虽然用Ctrl+C强制结束了进程,但错误依然存在,用netstat -an |grep 5120和ps aux |grep 5120都还能看到刚才用Ctrl+C“强制结束”了的进程,端口还是使用中,只好每次用kill结束进程,

linux下的php网站放到Windows服务器IIS下导入 .htaccess文件伪静态规则转换 (wordpress)

需要特别注意的是: 1. .htacdess文件在 wordpress中 是可以生成的 安装 WP Super Cache后,开启该插件>>设置>>高级>>找到并点击"更新Mod_Rewrite 规则"按钮,这是会在网站根目录生成 .htaccess文件 将该文件导入到iis中的 url重写模块即可 2. 针对图片脚本样式文件报404的错误,可以通过以下规则 直接过忽略掉 <rule name="jpgtest" stopP

Linux下使用Apache实现域名转发(Tomcat/JBOSS)

Linux下安装.配置JDK就不细说了,网上的资料很多; 在安装apache时可能会遇到诸多问题,譬如APR not found,pcre-config for libpcre not found等问题,这都是和系统的具体环境有关,详细的解决办法这里不细说,推荐几个解决的方案,可以综合起来根据具体情况排查问题,千万不要过于依赖某一个方案,要对症下药,链接地址: http://www.cnblogs.com/JemBai/archive/2012/11/07/2759139.html http:/

Linux下实现MySQL多端口多实例运行

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 Linux下实现MySQL多端口多实例运行. 主要操作 创建/etc/my_multi.cnf文件 vi /etc/my_multi.cnf 内容如下(注意!如果你的MySQL是通过源代码方式安装,请根据实际情况更改mysqld和mysqladmin这两项,还有就是注意更改root的密码.) [mysqld_multi] mysqld =