一、安装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.-dev20.tar.gz

cd haproxy-1.5-dev20

3、编译

查看内核版本
[root@localhost haproxy-1.5-dev20]# uname -a
Linux localhost.localdomain 3.10.-.el7.x86_64 # SMP Fri Apr :: UTC 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

启动成功

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

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

浏览器打开ip:8888/stats

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

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

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

telnet 7891

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

此时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..tar.gz
cd keepalived-1.3.

4、编译

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

5、配置文件

mkdir /etc/keepalived
touch /etc/keepalived/keepalived.conf
vim 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/src/keepalived-1.3.4/keepalived/etc/init.d的文件keepalived拷贝到/etc/init.d下

cp /usr/local/src/keepalived-1.3./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 ]
then
haproxy -f /etc/haproxy/haproxy.conf 2>/dev/null
#echo "重启haproxy"
sleep
COUNT=$(ps -C haproxy --no-header |wc -l)
if [ $COUNT -eq ]
then
#echo "停止keepalived"
killall keepalived 2>/dev/null
fi fi

6、添加执行权限

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

7、添加keepalived到系统服务

chkconfig --add keepalived

8、启动

chkconfig --add keepalived

9、查看

service keepalived  status

启动成功

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

ip a

设置成功

同样在备份服务器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服务

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

1、防火墙是否允许通行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  --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
}

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

三、测试高可用

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

service keepalived stop

2、查看IP

ip a

此时浮点IP已经解绑

再关闭172.28.5.4haproxy服务

kill - 

此时telnet 172.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服务,并重启

查看ip

ip a

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

在从节点服务器运行

ip a

此时VIP已经解绑。

 

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

  1. linux下最简单的端口转发工具

    linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载wget http://www.boutell.com/ ...

  2. Centos 7.0 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入(1)

    一.本系列分为6部分 1.Centos 7.0 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入 2.Centos 6.5 下安装 Zabbix server 3.0服务器的安 ...

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

    需要特别注意的是: 1. .htacdess文件在 wordpress中 是可以生成的 安装 WP Super Cache后,开启该插件>>设置>>高级>>找到并点 ...

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

    Linux下Socket编程的端口问题( Bind error: Address already in use ) 在进行linux网络编程时,每次修改了源代码并再次编译运行时,常遇到下面的地使用错误 ...

  5. Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用

    Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用 hydra可以破解: http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco a ...

  6. [转载]Linux上使用ssl进行端口转发

    原文地址:Linux上使用ssl进行端口转发 作者:呼延十 背景介绍 作为一个后端程序员,经常要和别人联调接口,每当这时,总是被公司的各种,dev,qa,pre,prod环境搞得头疼,,,我真的只是想 ...

  7. linux下查看进程占用端口和端口占用进程命令

    Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...

  8. 在windows和linux下如何查看80端口占用情况?是被哪个进程占用?如何终止等

    一.在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等 这里主要是用到windows下的DOS工具,点击"开始"--"运行",输入&quo ...

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

    此办法只适合于linux下的php网站放到Windows服务器IIS下 ,  网站除了主页面正常以外  子页面全部出现404错误    这里子页面出现404 错误是说明伪静态没有开启 什么是.htac ...

随机推荐

  1. JAVA基础部分复习(七、JAVA枚举类型使用)

    /** * java中的枚举 * 枚举(enum),是指一个经过排序的.被打包成一个单一实体的项列表.一个枚举的实例可以使用枚举项列表中任意单一项的值. * 枚举在各个语言当中都有着广泛的应用,通常用 ...

  2. SSH设置秘钥登录

    设置 SSH 通过密钥登录 我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默 ...

  3. CF1109D Sasha and Interesting Fact from Graph Theory

    CF1109D Sasha and Interesting Fact from Graph Theory 这个 \(D\) 题比赛切掉的人基本上是 \(C\) 题的 \(5,6\) 倍...果然数学计 ...

  4. MyCat配置详解

    MyCAT 配置解析 server.xml Mycat的配置文件,设置账号.参数等schema.xml Mycat对应的物理数据库和数据库表的配置rule.xml Mycat分片(分库分表)规则 一 ...

  5. Appium介绍及工作原理

    一.Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriver的 ...

  6. PythonStudy——字符串重要方法 String important method

    # 1.索引(目标字符串的索引位置) s1 = '123abc呵呵' print(s1.index('b')) # 2.去留白(默认去两端留白,也可以去指定字符) s2 = '***好 * 的 *** ...

  7. 1.1 VMware简介

    VMware是真正“同时”运行,多个操作系统在主系统的平台上,像标准Windows应用程序那样切换.而且每个操作系统你都可以进行虚拟的分区.配置而不影响真实硬盘的数据,通过网卡将几台虚拟机用网卡连接为 ...

  8. python设置路径值时为什么要输入r

    r:代表处理不转义现象 Python中,u表示unicode string,表示使用unicode进行编码,没有u表示byte string,类型是str,在没有声明编码方式时,默认ASCI编码.如果 ...

  9. 如何将极客时间课程制作成kindle电子书

    订阅了几个极客时间的专栏,一直没有时间去看. 最近,想着如果把内容制作成电子书,利用上下班时间学习一下,岂不是很方便? 在网上搜到一个很好用的开源软件,几分钟就可以把极客时间的专栏做成电子书,简直太棒 ...

  10. [转]vs2010用 boost.python 编译c++类库 供python调用

    转自:http://blog.csdn.net/wyljz/article/details/6307952 VS2010建立一个空的DLL 项目属性中配置如下 链接器里的附加库目录加入,python/ ...