server2 172.25.5.2 httpd
server3 172.25.5.3 httpd
server5 172.25.5.5 haproxy corosync pacemaker crmsh
server6 172.25.5.6 haproxy corosync pacemaker crmsh
原理及简介:
HAProxy 提供高可用 负载均衡 以及基于 TCP 和 HTTP 应用的代理
是轻量级的 擅长处理并发
但与nginx不同的是 Haproxy 并不是 Http服务器。很多带反向代理均衡负载的产品,如nginx,apacheproxy,都清一色是 WEB 服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)或动态(PHP,cgi..)文件的传输以及处理。而Haproxy仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http服务
它自带健康检测,1.3版本后还自带一些简单的规则匹配
动静分离,读写分离主要使用了acl函数,haproxy支持acl函数
配置haproxy:
yum install haproxy -y
版本有点低,凑合着用ovo
编辑配置文件:
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:80
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1:80 check
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 172.25.5.2:80 check
server app2 172.25.5.3:80 check
两台httpd服务器:server2,srver3
测试haproxy的轮询:server5,和server6
haproxy能正常工作后,给server6也安装,scp配置文件,
开始配置corosync:
安装:
yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm
yum install pacemaker corosync -y
server5 ,server6配置:
corosync配置:(配置pacemaker在corosync启动时自动启动)
# Please read the corosync.conf.5 manual page
compatibility: whitetank
totem {
version: 2
secauth: off
threads: 0
interface {
ringnumber: 0
bindnetaddr: 172.25.5.0
mcastaddr: 226.94.1.1
mcastport: 5405
ttl: 1
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
to_syslog: yes
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
amf {
mode: disabled
}
#让pacemaker在corosync中以插件方式启动:
service{
ver:0
name:pacemaker
}
#运行身份
aisxec{
user:root
group:root
}
打开corosync后pacemaker自动启动:
配置corosync的key,并scp到server6,保证两台的key一致:
key创建是需要敲击键盘,
然后scp到另一台服务器。
配置crm:
禁用禁用stonith设备(如果没有stonith设备,最好禁用):
不禁用会出现问题。
configure
crm(live)configure# property stonith-enabled=false
crm(live)configure# commit
配置vip:
加入资源haproxy:
crm(live)configure# primitive haproxy lsb:haproxy op monitor interval=30s
crm(live)configure# commit
两个资源不再一台服务器工作:
建立web组:
crm(live)configure# group web haproxy vip
crm(live)configure# commit
crm(live)configure# cd
crm(live)# status
Last updated: Fri Aug 3 17:02:18 2018
Last change: Fri Aug 3 17:02:09 2018 via cibadmin on server6
Stack: classic openais (with plugin)
Current DC: server5 - partition with quorum
Version: 1.1.10-14.el6-368c726
2 Nodes configured, 2 expected votes
2 Resources configured
Online: [ server5 server6 ]
Resource Group: web
haproxy (lsb:haproxy): Started server6
vip (ocf::heartbeat:IPaddr): Started server6
crm(live)# quit
hosts:
服务已经正常开启:
注意:
如果集群里只有两个节点时:
将其中一个节点停止,资源就会消失而不是转移到另一个节点上,因为当前是两节点的集群,任何一个节点损坏,其它节点就没办法进行投票,status 中就会变成 WITHOUT quorum
所以我用了三个节点,当其中一个节点停止时,其他两个还能进行投票
当只剩下一个节点时,整个集群就会崩溃,上面的资源全部停掉,我们可以通过忽略投票的方式解决这个问题:
[root@server5 haproxy]# crm
crm(live)# configure
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# commit
crm(live)configure# quit
bye
取消ip后有会自动生成,
关掉haproxy后又会自动重启,
[root@server5 haproxy]# /etc/init.d/haproxy stop
Stopping haproxy: [ OK ]
[root@server5 haproxy]# /etc/init.d/haproxy status
haproxy is stopped
[root@server5 haproxy]# /etc/init.d/haproxy status
haproxy is stopped
[root@server5 haproxy]# /etc/init.d/haproxy status
haproxy is stopped
[root@server5 haproxy]# /etc/init.d/haproxy status
haproxy (pid 12220) is running...
[root@server5 haproxy]# /etc/init.d/haproxy status
haproxy (pid 12220) is running...
[root@server5 haproxy]# /etc/init.d/haproxy status
haproxy (pid 12220) is running...
有个问题是服务会自动重启,但不会调转到另一台服务器,还没整好,正在调式中…
还没添加fence。