学无止境·运维高阶⑤(LVS-DR 群集 && 配置Nginx负载均衡)

LVS-DR 群集 && 配置Nginx负载均衡

  • 一、LVS-DR 群集
    • 1、相关配置环境
    • 2、在RS上配置并启动脚本
      • 2.1相关脚本
      • 2.2 启动脚本,另一台RS同样步骤
    • 3、LVS-DR模式配置脚本
    • 4、测试
  • 二、Nginx负载均衡
    • 1、安装Nginx并关闭相应设置
    • 2、向主机 node2,node3 写入内容
    • 3、在node1上配置
    • 4、测试

一、LVS-DR 群集

学无止境·运维高阶⑤(LVS-DR 群集 && 配置Nginx负载均衡)_第1张图片

1、相关配置环境

主机 用途 ip
node1 VIP 192.168.85.160
node2 RS1 192.168.85.161
node3 RS2 192.168.85.162

2、在RS上配置并启动脚本

2.1相关脚本

[root@node3 ~]# vim /etc/init.d/lvs_rs
#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
#   available server built on a cluster of real servers, with the load
#   balancer running on Linux.
# description: start LVS of DR-RIP
LOCK=/var/lock/ipvsadm.lock
VIP=192.168.85.160
. /etc/rc.d/init.d/functions
start() {
     PID=`ifconfig | grep lo:10 | wc -l`
     if [ $PID -ne 0 ];
     then
         echo "The LVS-DR-RIP Server is already running !"
     else
         /sbin/ifconfig lo:10 $VIP netmask 255.255.255.255 broadcast $VIP up
         /sbin/route add -host $VIP dev lo:10
         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/ens33/arp_ignore
         echo "2" >/proc/sys/net/ipv4/conf/ens33/arp_announce
         echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
         echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
         /bin/touch $LOCK
         echo "starting LVS-DR-RIP server is ok !"
     fi
}
 
stop() {
         /sbin/route del -host $VIP dev lo:10
         /sbin/ifconfig lo:10 down  >/dev/null
         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/ens33/arp_ignore
         echo "0" >/proc/sys/net/ipv4/conf/ens33/arp_announce
         echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
         echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
         rm -rf $LOCK
         echo "stopping LVS-DR-RIP server is ok !"
}
 
status() {
     if [ -e $LOCK ];
     then
        echo "The LVS-DR-RIP Server is already running !"
     else
        echo "The LVS-DR-RIP Server is not running !"
     fi
}
 
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  status)
        status
        ;;
  *)
        echo "Usage: $1 {start|stop|restart|status}"
        exit 1
esac
exit 0

2.2 启动脚本,另一台RS同样步骤

chmod +x /etc/init.d/lvs_rs 
chkconfig --add lvs_rs
service lvs_rs start 

3、LVS-DR模式配置脚本

vim /etc/init.d/lvs_dr 
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
#   available server built on a cluster of real servers, with the load
#   balancer running on Linux.
# description: start LVS of DR
LOCK=/var/lock/ipvsadm.lock
VIP=192.168.85.160
RIP1=192.168.85.161
RIP2=192.168.95.162
DipName=ens33
 
 
. /etc/rc.d/init.d/functions
start() {
     PID=`ipvsadm -Ln | grep ${VIP} | wc -l`
     if   [ $PID -gt 0 ];
     then
           echo "The LVS-DR Server is already running !"
     else
           #Set the Virtual IP Address
           /sbin/ifconfig ${DipName}:10 $VIP broadcast $VIP netmask 255.255.255.255 up
           /sbin/route add -host $VIP dev ${DipName}:10
           #Clear IPVS Table
           /sbin/ipvsadm -C
           #Set Lvs
           /sbin/ipvsadm -At $VIP:80 -s wrr
           /sbin/ipvsadm -at $VIP:80 -r $RIP1:80 -g -w 2
           /sbin/ipvsadm -at $VIP:80 -r $RIP2:80 -g -w 1
           /bin/touch $LOCK
           #Run Lvs
           echo "starting LVS-DR Server is ok !"       
     fi
}
 
stop()    {
           #clear Lvs and vip 
           /sbin/ipvsadm -C
           /sbin/route del -host $VIP dev ${DipName}:10
           /sbin/ifconfig ${DipName}:10 down >/dev/null
           rm -rf $LOCK
           echo "stopping LVS-DR server is ok !"
}
 
status() {
     if [ -e $LOCK ];
     then
         echo "The LVS-DR Server is already running !"
     else
         echo "The LVS-DR Server is not running !"
     fi
}
 
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  status)
        status
        ;;
  *)
        echo "Usage: $1 {start|stop|restart|status}"
        exit 1
esac
exit 0

4、测试

for ((i=1;i<=6;i++)); do curl 192.168.85.160; done

二、Nginx负载均衡

学无止境·运维高阶⑤(LVS-DR 群集 && 配置Nginx负载均衡)_第2张图片

1、安装Nginx并关闭相应设置

仓库配置


[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

关闭设置

systemctl  stop   firewalld 
 
setenforce   0

2、向主机 node2,node3 写入内容

systenctl start nginx    启动nginx服务
 
 echo "web test page ip is `hostname -I`" > /usr/share/nginx/html/index.html   #写入内容
 
systenctl start nginx    再次启动nginx服务

3、在node1上配置

 vim /etc/nginx/nginx.conf 
 
#在 http模块中写入如下内容
 
        server {
                listen  80;
                server_name test.ng.test;    定义域名  也可以用ip
                location / {
                        proxy_pass http://web_server;
                }
        }
        upstream web_server {
                server 192.168.85.161:80;     nginx服务器地址  
                server 192.168.85.162:80;
        }
 
 

4、测试

curl 192.168.85.160

你可能感兴趣的:(运维,lvs,nginx)