LVS+Keepalived+httpd

LVS简介

lvs有三种工作模式NAT(地址转换),IP Tunneling(IP隧道)、Direct Routing(直接路由)。 工作效率最低的是NAT模式,但NAT模式可以用于各种系统,各种环境的负载均衡,只需要一个公网ip即可实现 IP Tunneling模式调度器将连接分发到不同的后端real server,然后由real server处理请求直接相应给用户,大大提高了调度器的调度效率,后端real server没有物理位置和逻辑关系的限制,后端real server可以在Lan/Wlan,但是后端real server必须支持IP隧道协议. DR(Direct Routing)是效率最高的,与IP Tunneling类似,都是处理一般连接,将请求给后端real server,然后由real server处理请求直接相应给用户,Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层,所以DR模式的调度器和后端realserver必须在一个物理网段里,中间不能过路由器(也就是一个交换机相连).

lvs支持8种不同的调度算法轮叫(rr)、加权轮叫(wrr)、最小连接(lc)、加权最小连接(wlc)、基于局部性最小连接(lblc)、带复制的基于局部性最少链接(lblcr)、目标地址散列(dh)和源地址散列(sh).

Keepalived是运行在lvs 之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败 切换,提高系统的可用性

系统平台:Centos6.4

Keepalived版本:keepalived-1.2.4.

LVS版本:ipvsadm-1.2

LVS_Master:192.168.10.51

LVS_Slave:192.168.10.40

Apache1:192.168.10.41

Apache2:192.168.10.49

一、安装apache

1.1我们采用yum安装

#yum –y installhttpd

#/etc/init.d/httpdstart

1.2分别在两台web上建立测试页

# echo  "zhangfang111111">/var/www/html/index.html

# echo  "zhangfang222222">/var/www/html/index.html

1.3 测试是否正常

Web1

Web2

访问都ok

1.3执行lvs.sh脚本绑定VIP

#catlvs.sh

#!/bin/bash

#description:Config lvs.sh

VIP=192.168.10.180

/etc/rc.d/init.d/functions

case"$1" in

start)

/sbin/ifconfig lo:0 $VIP netmask255.255.255.255 broadcast $VIP

/sbin/route add -host $VIP dev lo:0

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

sysctl -p >/dev/null 2>&1

echo "RealServer Start OK"

;;

stop)

/sbin/ifconfig lo:0 down

/sbin/route del $VIP >/dev/null2>&1

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 "RealServer Stoped"

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

exit 0

#lvs.sh start

二、安装lvs+keepalievd(两台调度器都安装)

2.1安装之前系统需要安装popt-statickernel-devel make gcc openssl-devel lftp libnl* popt*

2.2 开启路由转发功能

#vim /etc/sysctl.conf

net.ipv4.ip_forward= 1

#sysctl -p

2.3.安装ipvsadm

#wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz

2.4做软连接,防止make时出错,找不到kernel文件

#ln -s/usr/src/kernels/2.6.32-504.16.2.el6.x86_64/ /usr/src/linux/

#tar ipvsadm-1.26.tar.gz

#cd ipvsadm

#make &&make install

Ipvsadm安装完成

2.5安装keepalived

#wgethttp://www.keepalived.org/software/keepalived-1.2.4.tar.gz

# tar zxvfkeepalived-1.2.4.tar.gz

#cdkeepalived-1.2.4

# ./configure&& make && make install

三、keepalived做成启动服务,方便管理

# cp/usr/local/etc/rc.d/init.d/keepalived /etc/init.d/

# cp/usr/local/etc/sysconfig/keepalived /etc/sysconfig/

# mkdir/etc/keepalived/

cp /usr/local/etc/keepalived/keepalived.conf/etc/keepalived/

# cp/usr/local/sbin/keepalived /usr/sbin/

# servicekeepalived start | stop

3.1修改keepalived配置文件如下

! ConfigurationFile for keepalived

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smpt_connect_timeout 30

router_id zhangfang

}

vrrp_instanceVI_1 {

state MASTER

interface eth0 #指定HA监测网络的接口

virtual_router_id 20 #虚拟路由标示,这是标示是一个数字,同一个vrrp实例使用唯一的标示,即同一vrrp_instance下,MASTER和BACKUP必须是一致的

priority 100 #定义优先级,数字越大,优先级越高

advert_int 1 #设置MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

authentication { #设置验证类型和密码

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

auth_pass 1111 #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通行

}

virtual_ipaddress {

192.168.10.180

}

}

virtual_server192.168.10.180 80 {

delay_loop 6 #设置运行状况的检查时间

lb_algo rr

lb_kind DR

#persistence_timeout 50 #会话保持时间

protocol TCP #转发协议类型

real_server 192.168.10.41 80 {

weight 3

TCP_CHECK {    #realserver的状态检测设置部分

connect_timeout 10 #标示10s无响应超时

nb_get_retry 3 #重试次数

delay_before_retry 3 #重试间隔

connect_port 80

}

}

real_server 192.168.10.49 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

3.2将配置文件同步到LVS_Slave上

#scp  /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/

修改内容如下:

state BACKUP #状态

priority 100 #修改优先级 

3.3分别启动两台lvs,我们来查看日志

LVS_Master

注意,从划红线区域看到这台主机绑定了VIR

通过ip  addr 查看下VIP是否绑定

LVS_Slave:日志信息

3.4我们在LVS_Master上看下群集状态

四、进行测试

在浏览器里面输入http://192.168.10.180

说明按照轮询的算法,分别转后至节点,从而达到负载均衡的效果

五、模拟故障

5.1停掉节点1

#/etc/init.d/httpdstop

5.2查看lvs状态

#ipvsadm -ln

IP VirtualServer version 1.2.1 (size=4096)

ProtLocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.10.180:80 rr

->192.168.10.41:80             Route   3     0          2

注意出现故障的那台机器,已经被踢出了,从而实现了健康检查

测试一下

查看邮件

5.3 关掉MASTER上的keepalived

#/etc/init.d/keepalivedstop

5.4 查看SLAE的状态

已经正常接管过来,

测试一下

访问正常

注意,大家可以看到,经过上面的演示我们实现了LVS的高可用及前端负载均衡的高可用,同时实现对后端realserer监控,也实现后端resalserver宕机时会给管理员发送邮件,但是我们还有几个问题没有解决,问题如下

1.  所以realserver都宕机,怎么处理,是不是用户就没法打开,还是提供一下为何页面

2.  怎么完成为何模式keepalived切换?

3.  如何在keepalived故障时,发送邮件给指定的管理员

六、我们在负载均衡器上提供维护页面,这样比较靠谱,也比较常用

6.1 分别在MASTER和SLAVE安装httpd

#yum –y installhttpd

6.2配置维护页面

#echo"Website is currently under maintenance, please come back later"  >/var/www/html/index.html

6.3启动httpd

#/etc/init.d/httpdstart

6.4修改配置文件

!Configuration File for keepalived

global_defs{

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smpt_connect_timeout 30

router_id zhangfang

}

vrrp_instanceVI_1 {

state MASTER

interface eth0 #指定HA监测网络的接口

virtual_router_id 20 #虚拟路由标示,这是标示是一个数字,同一个vrrp实例使用唯一的标示,即同一vrrp_instance下,MASTER和BACKUP必须是一致的

priority 100 #定义优先级,数字越大,优先级越高

advert_int 1 #设置MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

authentication { #设置验证类型和密码

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

auth_pass 1111 #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通行

}

virtual_ipaddress {

192.168.10.180

}

}

virtual_server192.168.10.180 80 {

delay_loop 6 #设置运行状况的检查时间

lb_algo rr

lb_kind DR

#persistence_timeout 50 #会话保持时间

protocol TCP #转发协议类型

real_server 192.168.10.41 80 {

weight 3

TCP_CHECK {   #realserver的状态检测设置部分

connect_timeout 10 #标示10s无响应超时

nb_get_retry 3 #重试次数

delay_before_retry 3 #重试间隔

connect_port 80

}

}

real_server 192.168.10.49 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

sorry_server 127.0.0.1 80

}

增加sorry_server选项

6.5关闭所有的realserver,并重启下MASTER和SLAVE的keepalived

#/etc/init.d/httpdstop

#/etc/init.d/keepalivedrestart

6.6查看lvs

# ipvsadm-ln

IPVirtual Server version 1.2.1 (size=4096)

ProtLocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.10.180:80 rr

->127.0.0.1:80                 Local   1     0          0

可以看到所有节点已经被踢出,只有本机提供服务

测试

时间: 2024-10-23 00:03:22

LVS+Keepalived+httpd的相关文章

Lvs+keepalived+httpd+NFS搭建高可用

Lvs+keepalived+httpd+NFS搭建高可用 自己捯饬的模型图 NAT模型图 注意事项:RealServer需要把网关指向Director,并且Director要打开转发功能命令如下: echo "1" > /proc/sys/net/ipv4/ip_foreward DR模型图 注意事项:需要在RealServer配置如下信息: echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc

lvs+keepalived+httpd高可用集群

实验环境 (1)本次基于VMware Workstation搭建一个四台Linux(CentOS 7.4)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机),另外两台作为真实的Web服务器(向外部提供http服务,这里仅仅使用了CentOS默认自带的http服务,没有安装其他的类似Tomcat.Jexus服务). (2)本次实验基于DR负载均衡模式,设置了一个VIP(Virtual IP)为172.18.38.99,用户只需要访问这个IP地址即可获得网页服务.其中,负

Linux LVS+Keepalived+Httpd配置

NAT模式 #!/bin/bash #开启director服务器上的路由转发功能: echo 1 > /proc/sys/net/ipv4/ip_forward #关闭icmp的重定向 echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects echo 0 > /proc/sys/net/ipv4/conf/eth0/send

lvs + keepalived + httpd 高可用集群

实验信息和拓扑:备注:Centos 6.5 selinux –disabled iptables off ServerName Ipaddress information LVSMaster 172.16.100.10/24 LVSBackup 172.16.100.11/24 VIP 172.16100.200/24 RealServer1 172.16.100.100/24 RealServer2 172.16.100.101/24 配置lvs Master & lvs Backup # y

lvs + keepalived + httpd 高可用集群(转)

实验信息和拓扑:备注:Centos 6.5 selinux –disabled iptables off ServerName Ipaddress information LVSMaster 172.16.100.10/24 LVSBackup 172.16.100.11/24 VIP 172.16100.200/24 RealServer1 172.16.100.100/24 RealServer2 172.16.100.101/24 配置lvs Master & lvs Backup # y

lvs及lvs+keepalived负载均衡

################ lvs负载均衡 ####################实验环境:Redhat6.5ip:172.25.8.1,hostname:server1.example.com,lvs httpdip:172.25.8.3,hostname:server3.example.com,httpdip:172.25.8.4,hostname:server4.example.coms,httpd关闭所有主机防火墙iptables server1安装lvs作为调度器,后面的ser

LVS+Keepalived实现负载均衡

一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等. 古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车. 在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户

LAMP+LVS+KEEPALIVED(一)

LAMP+LVS+KEEPALIVED(一) 1.apache工作模式及参数说明 (1)prefork模式 prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程.每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大. (2)worker模式 worker使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合高流量的http服务器.缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起"死掉&qu

LAMP+LVS+KEEPALIVED(二)

LAMP+LVS+KEEPALIVED(二) (3)修改httpd.conf #如果使用yum安装apache,配置文件存放在 /etc/httpd/conf/httpd.conf #DocumentRoot为 /var/www/html #如果是使用源码方法安装,配置文件存放在 /usr/local/apache2/conf/httpd.conf #DocumentRoot为 /usr/local/apache2/htdocs #在<IfModule></IfModule>添加如