美文网首页
lvs+keepalived+nginx+tomcat实现高性能

lvs+keepalived+nginx+tomcat实现高性能

作者: 右耳菌 | 来源:发表于2022-08-17 15:58 被阅读0次

相关知识了解

  • LVS
    全称Linux Virtual Server,也就是Linux虚拟服务器,由章文嵩(现就职于于淘宝,正因为如此才出现了后来的fullnat模式)博士发起的Load Balance开源项目。

  • Keepalived
    keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),广义上讲,是指整个系统的高可用行,狭义上来说就是主机的冗余和接管。

  • Nginx
    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

拓扑图

最少五台服务器(这里为了节省服务器,所以将三个tomcat都放在一个服务器上了,当然实际的情况应该是七台)

vip:192.168.1.100

lvs master 192.168.1.101
lvs slave 192.168.1.102

nginx1 192.168.1.201
nginx2 192.168.1.202

tomcat 192.168.1.203(三台tomcat,端口不一样)

centos 7.x

安装Nginx 和 Tomcat 并且配置好负载均衡

具体的流程可以参考这篇文章:配置nginx和tomcat负载均衡/反向代理

安装lvs+keepalived

1. lvs master
  • 安装ipvsadm、keepalived
yum -y install ipvsadm keepalived
  • 开启路由转发

查看是否开启

sysctl -a | grep "ip_forward"

如果显示net.ipv4.ip_forward = 1 则表示已经开启。

永久开启

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

加载,使得配置文件立即生效

sysctl -p 

检查

sysctl -a | grep "ip_forward"
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0
  • 使用keepalived来管理lvs(master)
vim /etc/keepalived/keepalived.conf
global_defs
{
  router_id master_210
}
 
vrrp_instance aiyou {
  state MASTER
  interface eth0 #对应虚拟机的网卡,使用ifconfig查看
  virtual_router_id 100    #这个数值 master和slave必须统一
  priority 151     #这个数值决定哪台服务器是master 
  advert_int 1
  authentication {
        auth_type PASS
        auth_pass 123456
  }
  virtual_ipaddress {
        192.168.146.200
  }
}
virtual_server 192.168.146.200 80 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  #persistence_timeout 50
  protocol TCP
# 这里的real server是具体的一台nginx服务器
  real_server 192.168.146.139 80 {
    weight 1
    TCP_CHECK {
      connect_timeout 3
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
    }
  }
# 这里的real server是具体的一台nginx服务器
  real_server 192.168.146.140 80 {
    weight 1
    TCP_CHECK {
      connect_timeout 3
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
    }
  }
}

重启keepalived

systemctl restart keepalived

查看状态

systemctl status keepalived
2. lvs slave
  • 安装ipvsadm、keepalived
yum -y install ipvsadm keepalived
  • 开启路由转发
    永久开启
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

加载,使得配置文件立即生效

sysctl -p 

检查

sysctl -a | grep "ip_forward"
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0
  • 使用keepalived来管理lvs(slave)
vim /etc/keepalived/keepalived.conf
global_defs
{
  router_id slave_211
}
 
vrrp_instance aiyou {
  state MASTER
  interface eth0
  virtual_router_id 100    #这个数值 master和slave必须统一
  priority 150     #这个数值决定哪台服务器是master 这里我们比master数值低,所以角色是backup,
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 123456
  }
  virtual_ipaddress {
    192.168.146.200
  }
}

virtual_server 192.168.146.200 80 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  #            persistence_timeout 50
  protocol TCP
# 这里的real server是具体的一台nginx服务器
  real_server 192.168.146.139 80 {
    weight 1
    TCP_CHECK {
      connect_timeout 3
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
    }
  }
  # 这里的real server是具体的一台nginx服务器
  real_server 192.168.146.140 80 {
    weight 1
    TCP_CHECK {
      connect_timeout 3
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
    }
  }
}

重启keepalived

systemctl restart keepalived

查看状态

systemctl status keepalived
3. nginx1
  • nginx上要跑个脚本
vi /etc/init.d/realserver
#!/bin/bash  
#   
# Script to start LVS DR real server.   
# description: LVS DR real server   
#   
.  /etc/rc.d/init.d/functions
VIP=192.168.1.222   #这里根据需要改成自己的VIP地址
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

赋予可执行权限,并启动脚本

chmod 755 /etc/init.d/realserver
service realserver start
  • nginx 2(每个nginx步骤和内容一样)
4. 测试
  • master上验证
ipvsadm –ln
  • salve上验证
ipvsadm –ln

如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~

相关文章

网友评论

      本文标题:lvs+keepalived+nginx+tomcat实现高性能

      本文链接:https://www.haomeiwen.com/subject/juvsgrtx.html