目录
前言
1 、 LVS 环境组网
2 、 ipvsadm 安装前准备
3 、 httpd 与 ipvsadm 下载
4 、 LVS 负载均衡配置
5 、真实 WEB 服务器配置及 arp 抑制
6 、 LVS 负载均衡测试
7 、附: arp 抑制参数
前言
本文主要讲解 centos5.x LVS DR 模式,环境搭建,理论知识请参考 LVS 中文官网
http://www.linuxvirtualserver.org/zh/index.html
1 、 LVS 环境组网
由于是使用的 VM 环境,自己 PC 当作客户机(即公网地址),调度器与服务器都是 VM 中虚拟机,所以客户和所有服务器之间都是物理直接相连网络 , 逻辑拓扑图如下:
2 、 ipvsadm 安装前准备 (也可以使用 yum -y install ipvsadm 安装)
外部IP地址 内部IP地址 角色
10.0.0.30/24 192.168.1.1/24 LVS 调度器(虚拟机)
10.0.0.237/24 192.168.1.2/24 RS1 (虚拟机)
10.0.0.238/24 192.168.1.3/24 RS2 (虚拟机)
10.0.0.130/24 无 客户机(自己电脑)
注:实际应用中 RS1 RS2 没有外部地址,当前环境中,没有物理双网卡环境,都采用一个网卡配置多个 IP 地址。
3 、 httpd 与 ipvsadm 下载
1 )在各服务器上修改主机名:
[root@LVS1 ~]# hostname LVS1
[root@RS1 ~]# hostname RS1
[root@RS2 ~]# hostname RS2
2 )在 RS1 RS2 上安装 httpd 服务
[root@RS2 ~]# yum install httpd -y
[root@RS2 ~]# /etc/init.d/httpd start
[root@RS2 ~# ps -ef|grephttpd
[root@RS1 ~]# yum install httpd –y
[root@RS1 ~]# /etc/init.d/httpdstart
[root@RS1 ~# ps -ef|grephttpd /var/www/html/index.html
Httpd 服务测试:
测试成功!
3 )下载 ipvsadm
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
我所使用的源包下载目录 /usr/local/src
我的 LVS 环境:
[root@RS1 src]# cat/etc/redhat-release
CentOS release 5.8 (Final)
[root@RS1 src]# uname -rm
2.6.18 -308.el5 x86_64
ipvsadm-1.26 对内核有要求,要求内核版本在 2.6.28 及以后的版本,如果符合了系统环境,还要安装依赖包 yum install -y wget make kernel-devel gcc gcc-c++ libnl* libpopt* popt-static。
我的内核版本不满足,使用 ipvsadm-1.24 。
[root@LVS1 src]# tar -zxfipvsadm-1.24.tar.gz
[root@LVS1 src]# ln -s /usr/src/kernels/2.6.18-348.12.1.el5-x86_64 /usr/src/linux /usr/src/kernels/2.6.18-348.12.1.el5-x86_64 RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.0.30:80 wrr persistent 20
-> 192.168.1.2:80 Route 1 0 0
-> 192.168.1.3:80 Route 1 0 0
由于有会话保持功能,接下来修改权重值
[root@LVS1 ~]# ipvsadm -d -t10.0.0.30:80 -r 192.168.1.3:80 192.168.1.3:80 Route 2 0 0
-> 192.168.1.2:80 Route 1 0 0
再次进行测试:
7 、附: arp 抑制参数
arp 响应限制
1 ) arp_ignore:
定义对目标地址为本地 IP 的 ARP 询问不同的应答模式 0
0 - ( 默认值 ): 回应任何网络接口上对任何本地 IP 地址的 arp 查询请求
1 - 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求
2 - 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求 , 且来访 IP 必须在该网络接口的子网段内
3 - 不回应该网络界面的 arp 请求,而只对设置的唯一和连接地址做出回应
4-7 - 保留未使用
8 - 不回应所有(本地地址)的 arp 查询
2 ) arp_announce:
对网络接口上,本地 IP 地址的发出的, ARP 回应,作出相应级别的限制 : 确定不同程度的限制 , 宣布对来自本地源 IP 地址发出 Arp 请求的接口
0 - ( 默认 ) 在任意网络接口( eth0,eth1 , lo )上的任何本地地址
1 - 尽量避免不在该网络接口子网段的本地地址做出 arp 回应 . 当发起 ARP 请求的源 IP 地址是被设置应该经由路由达到此网络接口的时候很有用 . 此时会检查来访 IP是否为所有接口上的子网段内 ip 之一 . 如果改来访 IP 不属于各个网络接口上的子网段内 , 那么将采用级别 2 的方式来进行处理 .
2 - 对查询目标使用最适当的本地地址 . 在此模式下将忽略这个 IP 数据包的源地址并尝试选择与能与该地址通信的本地地址 . 首要是选择所有的网络接口的子网中外出访问子网中包含该目标 IP 地址的本地地址 . 如果没有合适的地址被发现 , 将选择当前的发送网络接口或其他的有可能接受到该 ARP 回应的网络接口来进行发送 .
LVS脚本:
vi lvs #!/bin/sh
#
# Startup script for the Keepalived daemon
#
# processname: keepalived
# pidfile: /var/run/keepalived.pid
# config: /etc/keepalived/keepalived.conf
# chkconfig: - 21 79
# description: Start and stop Keepalived
# Source function library
. /etc/rc.d/init.d/functions
# Source configuration file (we set KEEPALIVED_OPTIONS there)
. /etc/sysconfig/keepalived
RETVAL=0
prog="keepalived"
start() {
echo -n $"Starting $prog: "
daemon keepalived ${KEEPALIVED_OPTIONS}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}
stop() {
echo -n $"Stopping $prog: "
killproc keepalived
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
}
reload() {
echo -n $"Reloading $prog: "
killproc keepalived -1
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/$prog ]; then
stop
start
fi
;;
status)
status keepalived
;;
*)
echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
exit 1
esac
exit $RETVAL
#########
centos 7
/usr/lib/systemd/system/keepalived.service
#####
[Unit]
Description=LVS and VRRP High Availability Monitor
After=syslog.target network.target
[Service]
Type=forking
KillMode=process
EnvironmentFile=-/etc/sysconfig/keepalived
ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
#####
##########################################
realServer脚本:
vi realserver
#!/bin/bash
#
# Add for chkconfig
# chkconfig: 2345 70 30
# description: RealServer's script
# processname: realserver.sh
VIP=192.168.1.1
# Source function library.
. /etc/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.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
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&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
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com