Centos7+Lvs+keeplived完成Apache高可用的负载均衡51CTO博客 - 亚美娱乐

Centos7+Lvs+keeplived完成Apache高可用的负载均衡51CTO博客

2019年03月10日12时31分49秒 | 作者: 梦秋 | 标签: 咱们,效劳,负载 | 浏览: 920

Centos7+Lvs+keeplived完结Apache高可用的负载均衡

近期一直在操练Linux相关的效劳布置,前面文章也介绍了一部分Linux的相关日常效劳,今日咱们就介绍Centos7+Lvs+keeplived完结Apache高可用的负载均衡,其实该功用关于一个企业运维人员来说是必需求把握的技术,并且要了解相关负载均衡及高可用的相关参数,这样才能够布置出一个归于特别环境的装备运用,咱们都知道lvs、nginx、haproxy能够完结运用的负载均衡,可是不能完结单点故障,所以咱们还需求凭借一个运用就是keepalived,当然咱们见的最多的就是lvs+keepalived装备运用了。所以咱们今日首要介绍的是Centos7+Lvs+keeplived完结Apache高可用的负载均衡,  keepalivedmaster和keepalivedbackup  两者之间经过vrrp协议运用组播进行通讯,master主机对外承受恳求并将恳求转发至后方的realserver,backup主机只承受恳求而不转发恳求。某时刻当backup主机没有承受到master主机发送的信息时,所以发送vrrp布告信息并播送arp信息,宣城自己是master,假如收到其他主机发送的布告信息的优先级比自己的高,那么自己将持续转为backup,优先等级高的机器,此刻就是新master主机,并顶替原master主机的作业。

每个keepalived机器都对后方的realserver进行监控,只不过master担任将外部恳求转发至后方的realserver,backup则不作该处理。而LVS呢,LVS将其控制程序ipvs嵌套至传输层数据流的Input钩子函数上,ipvs将发送至本控制器主机(director)上的数据流在input链上进行截流,经过对数据报文的剖析依据本身的算法将数据流通发至后台实在供给效劳的主机(Real Server)上,到达依据后端效劳器负载才能均衡分配处理使命的作用。关于LVS的更多参数介绍,咱们将在下一篇文章中介绍:

环境介绍:

VIP:192.168.7.50

Hostname:AA-S

IP:192.168.7.51

Role:Apache

Hostname:BB-S

IP:192.168.7.52

Role:Apache

Hostname:CC-S

IP:192.168.7.53

Role:LVS+Keepalived

Hostname:DD-S

IP:192.168.7.54

Role:LVS+Keepalived

咱们相同运用Apache作为web效劳器

首要是预备Apache效劳

Yum install httpd

检查httpd 版别

接下来咱们首要要为apache界说一个 默许的页面,便利区别

Vim /var/www/httml/index.html
</html>
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Apache</title>
<style>
body {
35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
<style type="text/css">
h1{color:red}
h2{color:blue}
h3{color:green}
h4{color:yellow}
}
</style>
</head><body bgcolor=#46A3FF>
<h1>Welcome to AA-S Apache</h1>
<h2>HostName:AA-S</h2>
<h3>IP:192.168.7.51</h3>
<h4>Service:Apache</h4>
<input type=button value="Refresh" onclick="window.location.href(http://192.168.7.51)">
</body>
</html>

发动效劳

Systemctl start httpd

然后增加默许的防火墙端口8o

Firewall-cmd zone=public add-port=80/tcp permanent

或许vim /etc/firewalld/zone/public.xml

增加一下格局

<port portocal=tcp port=80>

接下来咱们在本地拜访测验一下

接下来咱们也相同依照办法布置第二台apache效劳,办法跟上面彻底相同

</html>
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Apache</title>
<style>
body {
35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
<style type="text/css">
h1{color:red}
h2{color:blue}
h3{color:green}
h4{color:yellow}
}
</style>
</head><body bgcolor=#FF7F50>
<h1>Welcome to BB-S Apache</h1>
<h2>HostName:BB-S</h2>
<h3>IP:192.168.7.52</h3>
<h4>Service:Apache</h4>
<input type=button value="Refresh" onclick="window.location.href(http://192.168.7.52)">
</body>
</html>

测验拜访

接下来开端装置LVS

咱们在192.168.7.53上

yum install ipvsdm

装置完结

咱们相同在第二台效劳器上也装置IVS

192.168.7.54

yum install -y ipvsadm

接下来咱们持续装置keeplived,咱们是Keepalived效劳和lvs在同一台效劳器上

咱们首要在第一台效劳器上装置,192.168.7.53

yum install keepalived

vim /etc/keepalived/keepalived.conf

咱们检查默许装备

! 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_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
}
}
virtual_server 192.168.200.100 443 {
delay_loop 6
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.201.100 443 {
weight 1
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358
real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

咱们为了确保效劳的正确修正,咱们在修正前,先对keepalived.conf进行备份一份

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

接下来清空装备

Echo > keepalived keepalived.conf

然后张贴以下代码,需求留意的是里边interface需求跟当时的体系对应,否则会无法监听端口;

经过ip a sh 检查,比方默许一般是eth0,而我的体系是ens160

! 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_instance VI_1 { #界说一个vrrp组,组名仅有
state MASTER #界说改主机为keepalived的master主机
interface ens160 #监控eth0号端口
virtual_router_id 58 #虚拟路由id号为58,id号仅有,这个id决议了多播的MAC地址
priority 150 #设置本节点的优先级,master的优先级 要比backup的优先等级高,数值要大
advert_int 1 #检查距离,默许为1秒
authentication {
auth_type PASS #认证方法,暗码认证
auth_pass 1111 #认证的暗码,这个暗码有必要和backup上的共同
}
virtual_ipaddress { #设置虚拟的ip, 这个ip是今后对外供给效劳的ip。
192.168.7.50
}
}
virtual_server 192.168.7.50 80 { #虚拟主机设置,ip同上。
delay_loop 2 #效劳器轮询的时刻距离
lb_algo rr #lvs的调度算法
lb_kind DR #lvs的集群形式
nat_mask 255.255.255.0
persistence_timeout 50 #会话超时50s
protocol TCP #健康检查是用tcp仍是udp
real_server 192.168.7.51 80 { #后端实在主机1
weight 100 #每台机器的权重,0表明不给该机器转发恳求,知道它康复正常。
TCP_CHECK { #健康检查项目,以下
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.7.52 80 { #后端实在主机2
weight 100 #每台机器的权重,0表明不给该机器转发恳求,知道它康复正常。
TCP_CHECK { #健康检查项目,以下
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

咱们接着在第二台效劳器也装置keepalived

咱们相同备份keepalived.conf文件

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
echo > /etc/keepalived/keepalived.conf

接下来咱们需求装备backup的keepalived效劳,

其实不同跟master的略微有点不同:

state MASTER >> > state BACKUP #界说改主机为keepalived的backup主机,监控主master

priority 150 >>> priority 100 #设置本节点的优先级,数值要比master主机上的小

vim /etc/keepalived/keepalived.conf

然后张贴以下代码,需求留意的是里边interface需求跟当时的体系对应,否则会无法监听端口;

经过ip a sh 检查,比方默许一般是eth0,而我的体系是ens160

! 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_instance VI_1 { #界说一个vrrp组,组名仅有
state BACKUP #界说改主机为keepalived的master主机
interface ens160 #监控eth0号端口
virtual_router_id 58 #虚拟路由id号为58,id号仅有,这个id决议了多播的MAC地址
priority 100 #设置本节点的优先级,master的优先级 要比backup的优先等级高,数值要大
advert_int 1 #检查距离,默许为1秒
authentication {
auth_type PASS #认证方法,暗码认证
auth_pass 1111 #认证的暗码,这个暗码有必要和backup上的共同
}
virtual_ipaddress { #设置虚拟的ip, 这个ip是今后对外供给效劳的ip。
192.168.7.50
}
}
virtual_server 192.168.7.50 80 { #虚拟主机设置,ip同上。
delay_loop 2 #效劳器轮询的时刻距离
lb_algo rr #lvs的调度算法
lb_kind DR #lvs的集群形式
nat_mask 255.255.255.0
persistence_timeout 50 #会话超时50s
protocol TCP #健康检查是用tcp仍是udp
real_server 192.168.7.51 80 { #后端实在主机1
weight 100 #每台机器的权重,0表明不给该机器转发恳求,知道它康复正常。
TCP_CHECK { #健康检查项目,以下
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.7.52 80 { #后端实在主机2
weight 100 #每台机器的权重,0表明不给该机器转发恳求,知道它康复正常。
TCP_CHECK { #健康检查项目,以下
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

接下来就是测验keepalived的装备了

咱们在两台效劳器上别离发动keepalived效劳

systemctl start keepalived

咱们在master上检查网络监听状况。

然后在Master主机上检查网络监听状况。

然后咱们检查master主机上的ipvsadm

咱们经过以上能够得知,虚拟ip此刻绑定在192.168.7.53master上,然后中止192.168.7.53上的keepalived效劳,检查检查192.168.7.54Backup上的虚拟ip状况,现已监听到了Backup主机的网络端口上。

然后主机的状况就没有虚拟ip了

别的咱们检查一下ipvsadm的状况。

首要是master主机上的:

然后是backup上的

咱们能够检查一下切换的log

咱们在第二台效劳器上检查log

cat /etc/log/message

以上的装备,keepalived的高可用功用现已完结。

咱们也能够检查一下keepalived的状况

systemctl status keepalived

代理效劳器之间的负载均衡

接下来咱们要完结realserver效劳器装备

咱们需求在两台web(http)192.168.7.51,192.168.7.52,需求在这两台效劳器上装备虚拟VIP,所以在效劳器上履行以下脚本

#!/bin/bash
# chkconfig: 2345 85 35
# Description: Start real server with host boot
VIP=192.168.7.50
function start() {
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
echo “Real Server $(uname -n) started”
}
function stop() {
ifconfig lo:0 down
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
echo 0 >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 >/proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 >/proc/sys/net/ipv4/conf/all/arp_announce
echo “Real Server $(uname -n) stopped”
}
case $1 in
start)
start
;;
stop)
stop
;;
*)
echo “Usage: $0 {start|stop}”
exit 1
esac

咱们保存退出后,需求给履行权限

chmoe a+x realserver

别的咱们将脚本拷贝到第二台web效劳器上,然后履行上面相同的操作

scp realserver root@192.168.7.52:/DATA

然后在两台效劳器上都需求履行这个脚本

./realserver start

接着咱们能够再检查一下ipvsadm

咱们在两台效劳器上别离履行

接下来咱们就测验通虚拟IP来测验拜访

192.168.7.50

咱们回头看看里边lvs战略

vim /etc/keepalived/keepalived.conf
#回话超时50s

最终咱们说一下如何将realserver的脚本增加到随体系发动

咱们将运用chkconfig add 来办理效劳器的增加、次序

chkconfig add realserver
cp realserver /etc/init.d/ 将脚本拷贝到指定目录
chkconfig add realserver 增加realserver脚本到主动发动
chkconfig list 检查主动发动效劳

经过以上装备后,咱们就能够经过效劳进行操作了

/etc/init.d/realserver stop
/etc/init.d/realserver start

chkconfig realserver on 设置为主动发动

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章