集群HA piranha keepalived haproxy

  • 作者:未知
  • 来源:开源中国
  • 2018-03-05 01:19:09

摘要: piranha keepalived haproxy

HA+LB图形界面管理

Piranha Configuration Tool 配 置 Load Balancer 外挂程式

环境:rhel6.5

两个HA主机:192.168.2.228 node1.example.com 192.168.2.246 node2.example.com

两个LVS主机:192.168.2.226 node3.example.com 192.168.2.15 vm1.example.com

1 (43).jpg

HA192.168.2.228主机上:

yum install -y piranha 用piranha配置工具

piranha-passwd 设置密码

/etc/init.d/piranha-gui start

netstat -antlp 端口是3636

piranha-gui服务,唯有在主节点上

/etc/sysconfig/ha/lvs.cf 配置文件,图形界面里设置好后,会自动同步到文件里

另一HA192.168.2.246上:

yum install -y piranha

网页访问192.168.2.228:3636

登录用户piranha,密码为自己设置的密码

 

global setting:(主)

REDUNDENCY:(备)

注意端口不要跟别人冲突。

VIRTUAL SERVERS:(虚拟服务)

virtual server:

添加虚拟IP地址,选择RR轮转算法。

real server:(添加两台要访问的主机ip)

激活所有节点。

图形界面里设置好后,会自动同步到文件/etc/sysconfig/ha/lvs.cf里,若要微调,可以直接修改文件。修改文件后需重启服务。

在两个LVS主机上都执行以下操作:

yum install -y arptables_jf httpd

绑定虚拟IP,在所有真实伺服器上配置虚拟IP位址,建立IP别名。:

ifconfig eth0:0 192.168.2.148 netmask 255.255.255.255

arptables -A IN -d 192.168.2.148 -j DROP

arptables -A OUT -s 192.168.2.148 -j mangle --mangle-ip-s 192.168.2.15(226主机也是)

#arptables -A OUT -s <virtual_ip> -j mangle --mangle-ip-s <real_ip>

这会导致真实伺服器忽略所有针对虚拟ip位址的arp请求,并改变任何向外arp回应,把原先包含虚拟IP的ARP回应改为包含真实伺服器的IP。唯一应该要回应任何VIP的ARP请求的节点,为目前启用的LVS节点。

/etc/init.d/arptables_jf save

/etc/init.d/arptables_jf start

chkconfig arptables_jf on

/etc/init.d/httpd start #需开启两个real server的httpd

echo `hostname` > index.html #给http写测试文件

两台HA主机etc/init.d/pulse start

网页测试:192.168.2.148

1.若两个HA主机228(主)和246的后台服务pulse全部开启,15和226主机的httpd都开启,刷新页面会轮循出现15和226的主机名。

当15的httpd关掉,刷新页面只会出现226主机名。

主节点ipvsadm -L查看

2.若228主节点/etc/init.d/pulse stop,则由备节点246接管,228复活之后不会回切。

ifconfig查看

备HA节点会显示STARTING PULSE AS BACKUP.

KeepAlived+LVS

环境:rhel6.5

两个HA主机:192.168.2.228 node1.example.com 192.168.2.246 node2.example.com

两个LVS主机:192.168.2.226 node3.example.com 192.168.2.15 vm1.example.com

HA机228 node1:

下载包keepalived-1.2.12.tar.gz

tar zxf keepalived-1.2.12.tar.gz

cd keepalived-1.2.12

./configure –prefix=/usr/local/keepalived #源码编译,yum install -y make gcc

安装包依赖性:yum install -y openssl-devel libnl-devel

make && make install 编译并安装,成功后生成/usr/local/keepalived/目录

cd /usr/local/keepalived/etc

因为只读/etc/keepalived/keepalived.conf文件,所以需建立软链接

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/ /etc/

ln -s /usr/local/keepalived/sbin/keepalived /sbin

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost #接收警报的 email地址,可以添加多个

}

notification_email_fromkeepalived@node1.example.com #设置邮件的发送地址

smtp_server 127.0.0.1 #设置 smtp server 地址

smtp_connect_timeout 30 #设置连接smtp 服务器超时时间

router_id LVS_DEVEL #load balancer 的标识 ID,用于email 警报

}

vrrp_instance VI_1 {

state MASTER #备机改为 BACKUP,此状态是由priority 的值来决定的,当前

priority的值小于备机的值,那么将会失去MASTER 状态

interface eth0 #HA 监测网络接口

virtual_router_id 133 #主、备机的virtual_router_id 必须相同,取值0-255

priority 100 #主机的优先级,备份机改为50,主机优先级一定要大于备机

advert_int 1 #主备之间的通告间隔秒数

authentication { #主备切换时的验证

auth_type PASS #设置验证类型,主要有PASS 和 AH两种

auth_pass 1111 #设置验证密码,在一个vrrp_instance 下,MASTER与 BACKUP 必

须使用相同的密码才能正常通信

}

virtual_ipaddress { #设置虚拟IP 地址,可以设置多个虚拟IP 地址,每行一个

192.168.2.148

}

}

virtual_server 192.168.2.148 80 { #定义虚拟服务器

delay_loop 6 #每隔 6 秒查询realserver 状态

lb_algo rr #lvs 调度算法,这里使用轮叫

lb_kind DR #LVS 是用 DR 模式

#persistence_timeout 50 #会话保持时间,单位是秒,这个选项对于动态网页是非常有

用的,为集群系统中session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的

请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保

持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在50 秒内没有执行任

何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受50 秒

的时间限制。

protocol TCP #指定转发协议类型,有tcp 和 udp两种

real_server 192.168.2.226 80 { #配置服务节点

weight 1 #配置服务节点的权值,权值大小用数字表示,数字越大,权

值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设

置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统

资源

TCP_CHECK { #realserve 的状态检测设置部分,单位是秒

connect_timeout 3 #10 秒无响应超时

nb_get_retry 3 #重试次数

delay_before_retry 3 #重试间隔

}

}

real_server 192.168.2.15 80 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

 

}

/etc/init.d/keepalived start

scp -r /usr/local/keepalived/ node2.example.com:/usr/local/ #直接发送给node2,node2就不用编译安装里。

在node2上:

建立软链接

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/ /etc/

ln -s /usr/local/keepalived/sbin/keepalived /sbin

vim /etc/keepalived/keepalived.conf

注:备机的keepalived 配置文件只改动红色字体部分!

测试:

1.高可用测试:停止master 上的 keepalived服务,看 backup是否接管。与piranha不同的是master主机的keepalived服务挂掉,交给BACKUP接管,当master恢复后,会切回到master。

2.负载均衡测试:访问http://192.168.2.148,看到页面在两个realserver 上切换表示成功!

你也可以通过ipvsadm -L查看详细连接情况!

3.故障切换测试:任意关闭realserver 上的 httpd服务,Keepalived监控模块是否能及时发现,

然后屏蔽故障节点,同时将服务转移到正常节点来执行,故障会发送邮件。

HAProxy提供高可用性、负载均衡以及基于TCP 和HTTP应用的代理,支持虚拟主机,

它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的 web站

点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可

以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整 合进您当前

的架构中,同时可以保护你的 web服务器不被暴露到网络上。好处:在real server上不需要做任何设置,只需开启httpd即可。

在Haproxy机node1上:

下载包haproxy-1.4.24.tar.gz

rpm包方式安装:

yum install -y rpm-build

rpmbuild -tb haproxy-1.4.24.tar.gz #把tar包转换成二进制文件

软件包依赖性:yum install -y pcre-devel

rpm -ivh rpmbuild/RPMS/x86_64/haproxy-1.4.24-1.x86_64.rpm #安装rpm包

mkdir /usr/share/haproxy

vim /etc/haproxy/haproxy.cfg

global

log 127.0.0.1 local0 #指定日志设备

log 127.0.0.1 local1 notice #指定日志类型,还有err warning debug

#log loghost local0 info

maxconn 4096 #并发最大连接数量

chroot /usr/share/haproxy #家目录,锁在这个目录,不会牵扯其他目录

uid 99 #用户

gid 99 #组

daemon #后台运行

#debug

#quiet

defaults

log global

mode http #默认使用 http的 7层模式 tcp: 4 层
option httplog #http 日志格式

option dontlognull #禁用空链接日志

retries 3 #重试 3次失败认为服务器不可用

option redispatch #当 client连接到挂掉的机器时,重新分配到健康的主机

maxconn 2000

contimeout 5000 #连接超时

clitimeout 50000 #客户端超时

srvtimeout 50000 #服务器端超时

stats uri /status #haproxy 监控页面

listen www.example.com *:80 #监听的实例名称(真机做解析),地址和端口

balance roundrobin #负载均衡算法

server web1 192.168.2.226:80 cookie app1inst1 check inter 2000 rise 2 fall 3

server web2 192.168.2.149:80 cookie app1inst2 check inter 2000 rise 2 fall 3

#cookie app1inst1:表示 serverid为 app1inst1

#check inter 2000:检测心跳频率

#rise 2:表示 2次正确认为服务器可用

#fall 5:表示 5次失败认为服务器不可用

 

/etc/init.d/haproxy start(保证httpd关闭,因为haproxy也监听80端口,会冲突)

 

 

访问192.168.2.228(HAnode1主机,即做Haproxy代理的主机),访问http://www.example.com测试负载 ,访问 haproxy监控页面:http://192.168.0.228/status

监控页面的认证

 

vim /etc/haproxy/haproxy.cfg

global

log 127.0.0.1 local0 #指定日志设备

#log 127.0.0.1 local1 notice #屏蔽local1

log 127.0.0.1 local0 info #指定日志类型,还有err warning debug

maxconn 4096 #并发最大连接数量

chroot /usr/share/haproxy #家目录,锁在这个目录,不会牵扯其他目录

uid 99 #用户

gid 99 #组

daemon #后台运行

#debug

#quiet

defaults

log global

mode http #默认使用 http的 7层模式 tcp: 4 层
option httplog #http 日志格式

option dontlognull #禁用空链接日志

retries 3 #重试 3次失败认为服务器不可用

option redispatch #当 client连接到挂掉的机器时,重新分配到健康的主机

maxconn 2000

contimeout 5000 #连接超时

clitimeout 50000 #客户端超时

srvtimeout 50000 #服务器端超时

listen status *:8080 监听端口8080

stats enable

stats uri /status #监控页面地址

stats auth admin:123456 #管理帐号和密码

stats refresh 5s #刷新频率

/etc/init.d/haproxy restart

haproxy日志:

vi /etc/rsyslog.conf #接受 haproxy日志

$ModLoad imudp

$UDPServerRun 514

#### RULES #### #定义规则,日志地址

local0.* /var/log/haproxy.log

/etc/init.d/rsyslog restart

 

网页访问192.168.2.228:8080/status

输入验证用户名和密码

Haproxy + Keeplived整合

MASTER:

vim keepalived.conf

! Configuration File for keepalived

vrrp_script check_haproxy { #大括号前注意空格,否则不调用脚本

script "/etc/keepalived/check_haproxy"

interval 2

weight 2

}

 

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalived@node1.example.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 133

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.2.148

}

track_script {

check_haproxy

}

}

 

BACKUP:

vim keepalived.conf

! Configuration File for keepalived

 

vrrp_script check_haproxy { #大括号前注意空格,否则不调用脚本

script "/etc/keepalived/check_haproxy"

interval 2

weight 2

}

 

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalived@node2.example.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

stateBACKUP #区分master

interface eth0

virtual_router_id 133

priority 50

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.2.148

}

track_script { #注意大括号前面的空格

check_haproxy

}

}

 

创建脚本vim /etc/keepalived/check_haproxy

#!/bin/bash

/etc/init.d/haproxy status &>/dev/null || /etc/init.d/haproxy restart &>/dev/null #检测haproxy状态不显示,要是状态不对,就重启服务。

if [ $? -ne 0 ];then #要是重启状态不成功,就关闭keepalived服务,切换到备机。

/etc/init.d/keepalived stop &>/dev/null

fi

 

chmod +x /etc/keepalived/check_haproxy

scp check_haproxy 192.168.2.242:/etc/keepalived/

scp /etc/haproxy/haproxy.cfg 192.168.2.242:/etc/haproxy/

scp haproxy-1.4.24-1.x86_64.rpm 192.168.2.242:/root/ #把haproxy发到backup机

scp /etc/rsyslog.conf 192.168.2.242:/etc/

 

/etc/init.d/httpd stop

/etc/init.d/haproxy stop

/etc/init.d/keepalived start

 

backup(242):

rpm -ivh haproxy-1.4.24-1.x86_64.rpm

/etc/init.d/rsyslog restart

/etc/init.d/httpd stop

/etc/init.d/haproxy stop

/etc/init.d/keepalived start

网页访问虚拟IP,主机备机keepalived一开启,haproxy就自动开启,主机挂掉,备机接管;主机恢复了,备机会把虚拟IP地址发给主机,主机继续接管。接管的机子上ip addr show查看具体情况。

 

 

 

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣