集群HA piranha keepalived haproxy
集群HA piranha keepalived haproxy
Berry涩味 发表于4年前
集群HA piranha keepalived haproxy
  • 发表于 4年前
  • 阅读 118
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 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





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.2283636

登录用户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.15226主机也是)

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

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


/etc/init.d/arptables_jf save

/etc/init.d/arptables_jf start

chkconfig arptables_jf on

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

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


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

网页测试:192.168.2.148

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

15httpd关掉,刷新页面只会出现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

HA228 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 ,MASTERBACKUP

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

}

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/ #直接发送给node2node2就不用编译安装里。


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 ,http模式,与LVS不一样,是代理。

环境:rhel6.5

HAproxy主机:192.168.2.228  node1.example.com

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

nginxhaproxy适合做网站调度的负载均衡,lvs适合做应用层数据库的负载均衡。


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

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

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

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

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

Haproxynode1上:

下载包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 #默认使用 http7层模式 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:表示 serveridapp1inst1

#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 #默认使用 http7层模式 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.2288080/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


backup242):

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查看具体情况。



标签: 高可用HA
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 8
博文 7
码字总数 14335
×
Berry涩味
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: