设为首页 收藏本站
查看: 2489|回复: 0

[经验分享] Keepalived+LVS实现负载均衡高可用

[复制链接]

尚未签到

发表于 2018-12-31 07:53:59 | 显示全部楼层 |阅读模式
  安装环境:Centos6.5 x86_64系统最小化安装
实验环境:
            LVS1:172.16.35.206
            LVS2:172.16.35.81
            Nginx1:172.16.35.249
            Nginx2:172.16.35.75
            VIP:172.16.35.211
实验拓扑图如下:

安装部署过程如下:
一.部署LVS1和LVS2
需要安装LVS软件和keepalived。
脚步如下:
//ipvsadm和iptables不能同时使用,所以这里需要清空iptables的表规则和信息或者关闭iptables
1.安装LVS

#!/bin/bash
yum install ipvsadm -y
/sbin/iptables -F
/sbin/iptables -Z
/sbin/ipvsadm -C  
2.安装Keepalived
脚本如下:

#!/bin/bash
yum install kernel-devel gcc gcc-c++ openssl-devel -y
wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz
tar zxvf keepalived-1.2.12.tar.gz
cd keepalived-1.2.12
./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/*/
make && make install
mkdir /etc/keepalived
\cp  -f keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
\cp -f keepalived/etc/init.d/keepalived.init /etc/init.d/keepalived
\cp -f keepalived/etc/init.d/keepalived.sysconfig /etc/sysconfig/keepalived
\cp -f /usr/local/keepalived/sbin/keepalived /sbin/  
二:配置Keepalived
LVS1的配置文件如下
! Configuration File for keepalived
global_defs {
notification_email {
445188383@qq.com #定义接受报警邮件的账号
}
notification_email_from root@localhost    #设置发送报警邮件的账号
smtp_server 127.0.0.1 #定义发送邮件的邮箱地址
smtp_connect_timeout 15 #发送邮件的超时时间
router_id LVS        #运行keepalived机器的一个标识信息
}
vrrp_instance VI_1 {    #定义一个VRRP实例
state BACKUP        #设置虚拟路由器的状态,只是一个标识作用,最后还是根据权重来竞选
interface eth0        #绑定虚拟IP的接口
virtual_router_id 51 #虚拟路由ID,同一组keepalived的虚拟路由ID要相同
  priority 100         #优先级,高的优先级,将会成为master并绑定VIP
advert_int 1         #定义检查间隔
smtp_alert            #当状态切换的时候发送邮件通知
authentication {     #VRRP报文是加密的,这里定义了加密的方式和密码
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #定义虚拟IP地址
172.16.35.211
}
}
virtual_server 172.16.35.211 80 { #定义一个lvs server实例
delay_loop 6     #定义检查的间隔
lb_algo wlc     #定义使用的lvs算法
lb_kind DR      #定义使用lvs的哪种模型
nat_mask 255.255.255.0 #定义掩码
persistence_timeout 50 #定义会话保持的时间
protocol TCP #定义检查使用的协议
real_server 172.16.35.249 80 { #定义一个lvs的实例
weight 3     #定义服务的权重
TCP_CHECK { #定义使用tcp协议进行检查
connect_timeout 3 #定义检查的超时时间
nb_get_retry 3 #定义检查失败的重试次数
delay_before_retry 3 #定义两次检查的时间间隔
connect_port 80 #定义检查的端口
}
}
real_server 172.16.35.75 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}  
LVS2的配置文件如下:
将LVS1的的配置文件priority改成比100小的值即可,其他无需改动。
Nginx配置:
配置lVS DR模型:

#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
#
.  /etc/rc.d/init.d/functions
VIP=172.16.35.211
host=`/bin/hostname`
case "$1" in
start)
# Start LVS-DR real server on this machine.
/sbin/ifconfig lo down
/sbin/ifconfig lo up
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
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
;;
stop)
# Stop LVS-DR real server loopback device(s).
/sbin/ifconfig lo:0 down
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
;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
if [ ! "$islothere" -o ! "isrothere" ];then
# Either the route or the lo:0 device
# not found.
echo "LVS-DR real server Stopped."
else
echo "LVS-DR real server Running."
fi
;;
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit 1
;;
esac  
安装Nginx

#!/bin/bash
groupadd -r nginx
useradd -r -g nginx nginx
yum install gcc gcc-c++ openssl-devel pcre-devel wget vim automake autoconf -y
wget http://nginx.org/download/nginx-1.4.7.tar.gz
#这个地址可能有的时候无法解析到域名下载不到这个包,需要自己去下载包然后安装安装步骤一步一步安装
#wget http://mirror.yongbok.net/nongnu/libunwind/libunwind-1.1.tar.gz
wget http://gperftools.googlecode.com/files/gperftools-2.1.tar.gz
#                       libunwind install            
tar -xvf libunwind-1.1.tar.gz
cd libunwind-1.1
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install
cd ..
#                       gperftools install
tar -xvf gperftools-2.1.tar.gz
cd gperftools-2.1
./configure
make && make install
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig
cd ..
#                       nginx install
tar zxvf nginx-1.4.7.tar.gz
cd nginx-1.4.7
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-google_perftools_module \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-pcre
make && make insatall
#                       Setup
mkdir /tmp/tcmalloc
chmod 0777 /tmp/tcmalloc
#简单的一个nginx优化
cat >> /etc/sysctl.conf  /usr/local/nginx/html/index.html
  


  测试高可用功能:
  关闭LVS1的keepalived功能,测试

  


  

  


  到此一个比较成熟的负载均衡高可用方案到此结束。下次会介绍keepalived+nginx的负载均衡高可用





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657788-1-1.html 上篇帖子: keepalived基础及使用DR模型构建一个real_server 下篇帖子: High Availability
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表