负载均衡-动静分离-(LVS+tomcat)

lvs+keepalived+tomcat负载均衡

#步骤


tomcat1:10.0.1.139
tomcat2:10.0.1.140

lvs1:10.0.1.137
lvs2:10.0.1.138





tips:nginx这里我们就不装了,主要nginx和tomcat都是web应用的一种,这里我们主要展示lvs+keepalived+tomcat负载均衡

1.安装tomcat1 、2
cd /data


tar zxvf  jdk-8u161-linux-x64.tar.gz

mv jdk1.8.0_161/ jdk1.8


添加环境变量
vi /etc/profile

  在末尾加入如下代码
JAVA_HOME=/data/jdk1.8  
JRE_HOME=/data/jdk1.8  
PATH=$JAVA_HOME/bin:$PATH  
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
export JAVA_HOME  
export PATH  
export CLASSPATH


生效环境变量-检查是否安装成功 
source /etc/profile

java  -version



上传tamcat源码-解压源码
cd /data
rz
tar zxvf apache-tomcat-8.5.43.tar.gz
mv apache-tomcat-8.5.43 tomcat


启动tomcat

cd /data/tomcat/bin

./startup.sh



#tips:另一个你可以拷贝过去,也可以重新安装配置


2.安装lvs1.2

yum -y install keepalived
yum -y install ipvsadm keepalived








3.配置lvs1 和 2 负载均衡


cd /etc/keepalived/
vim keepalived.conf

!! Configuration File for keepalived
global_defs {
   notification_email {
   746593797@qq.com      #填写邮箱用于监控,可不写,后期用zabbix监控
   }
   notification_email_from 746593797@qq.com #指定发件人
   smtp_server 192.168.200.1   #smtp服务器地址
   smtp_connect_timeout 30     #smtp连接超时时间
   router_id Apache_lb01       #主机id,不可重复,要保持唯一性
}
 
# 这是一个示列
vrrp_instance VI_1 {
    state MASTER        #keepalive的状态,主还是备?这里设置为主
    interface eth0      #设置绑定虚拟ip的网卡
    virtual_router_id 51  #这个虚拟的id,主备必须保证都一样
    priority 100        #优先级,值越大,优先级越高!
    advert_int 1          #master和backup之间同步检查的时间间隔。
    authentication {
#下面为2个keepalived之间的权限认证配置,auth_type 为验证类型,auth_pass 为密码。主备必须保证都一样。
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
#设置的虚拟ip,可以设置多个
        10.0.1.100
    }
}
 
virtual_server 10.0.1.100 8080 {    # 这里配置虚拟服务器 (192.168.1.220 为虚拟IP, 监听8080端口)客户端就访问这个地址。
    delay_loop 6     #健康检查时间间隔,单位是秒。
    lb_algo rr       #负载均衡调度算法,互联网应用常使用 wlc 或 rr。
    lb_kind DR       #负载均衡转发规则。一般包括 DR,NAT,TUN3 种,本次使用DR的方式
    nat_mask 255.255.255.255
    persistence_timeout 0 #会话保持时间,单位是秒。这个会话是网络7层传输协议中的(第三层)会话。比如我们把它设置为60,那么客户端60秒内访问LVS虚拟服务器的请求都会被转到到同1个后台服务器节点。如果设置为0,那么每次请求都会根据配置的调度情况进行分发。
    protocol TCP  #转发协议 protocol. 一般有 tcp 和 udp 两种
    real_server 10.0.1.139 8080 {    #这里配置真实服务器的地址与端口。
        weight 1   #权重,一般都是机器性能好的高一些,低的小一些
        TCP_CHECK {
                nb_get_retry 3
                delay_before_retry 3
                connect_timeout 5
                connect_port 8080
                }
            }
 
    real_server 10.0.1.140 8080 {
        weight 1
        TCP_CHECK {    # 健康检测
                nb_get_retry 3 # 重试次数
                delay_before_retry 3 # 重试次数的时间间隔
                connect_timeout 5 # 连接超时时间
                connect_port 8080 # 健康检测的端口
                }
 
            }
 
}




第二个lvs2

! Configuration File for keepalived
global_defs {
   notification_email {
   746593797@qq.com      #填写邮箱用于监控,可不写,后期用zabbix监控
   }
   notification_email_from 746593797@qq.com #指定发件人
   smtp_server 192.168.200.1   #smtp服务器地址
   smtp_connect_timeout 30     #smtp连接超时时间
   router_id Apache_lb01       #主机id,不可重复,要保持唯一性
}
 
# 这是一个示列
vrrp_instance VI_1 {
    state BACKUP        #keepalive的状态,主还是备?这里设置为备注意这里一定要大写,这个是变量,所以别搞错了
    interface eth0      #设置绑定虚拟ip的网卡
    virtual_router_id 51  #这个虚拟的id,主备必须保证都一样
    priority 90        #优先级,值越大,优先级越高!
    advert_int 1          #master和backup之间同步检查的时间间隔。
    authentication {
#下面为2个keepalived之间的权限认证配置,auth_type 为验证类型,auth_pass 为密码。主备必须保证都一样。
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
#设置的虚拟ip,可以设置多个
        10.0.1.100
    }
}
 
virtual_server 10.0.1.100 8080 {    # 这里配置虚拟服务器 (192.168.1.220 为虚拟IP, 监听8080端口)客户端就访问这个地址。
    delay_loop 6     #健康检查时间间隔,单位是秒。
    lb_algo rr       #负载均衡调度算法,互联网应用常使用 wlc 或 rr。
    lb_kind DR       #负载均衡转发规则。一般包括 DR,NAT,TUN3 种,本次使用DR的方式
    nat_mask 255.255.255.0
    persistence_timeout 0 #会话保持时间,单位是秒。这个会话是网络7层传输协议中的(第三层)会话。比如我们把它设置为60,那么客户端60秒内访问LVS虚拟服务器的请求都会被转到到同1个后台服务器节点。如果设置为0,那么每次请求都会根据配置的调度情况进行分发。
    protocol TCP  #转发协议 protocol. 一般有 tcp 和 udp 两种
    real_server 10.0.1.139 8080 {    #这里配置真实服务器的地址与端口。
        weight 1   #权重,一般都是机器性能好的高一些,低的小一些
        TCP_CHECK {
                nb_get_retry 3
                delay_before_retry 3
                connect_timeout 5
                connect_port 8080
                }
            }
 
    real_server 10.0.1.140 8080 {
        weight 1
        TCP_CHECK {    # 健康检测
                nb_get_retry 3 # 重试次数
                delay_before_retry 3 # 重试次数的时间间隔
                connect_timeout 5 # 连接超时时间
                connect_port 8080 # 健康检测的端口
                }
 
            }
 
}






验证是否配置成功?

[root@lvs1 keepalived]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.1.100:8080 rr
  -> 10.0.1.139:8080              Route   1      0          0         
  -> 10.0.1.140:8080              Route   1      0          0   














4.tomcat1和2-创建real服务器运行脚本

vim /sbin/realdr.sh 


#!/bin/bash 
VIP=10.0.1.100    #这里修改成你自己的虚拟ip就可以了,其他不用动的

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/default/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/default/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p





 chmod 755 /sbin/realdr.sh
 /sbin/realdr.sh start


#tips:另一个也是如此



5.测试

10.0.1.100:8080

此时访问虚拟机ip,应该是不断变化里面的内容的,如是,那就负载均衡成功
鼠标点不过来的话,按F5快速刷新







可能遇到的问题?
lvs负载均衡 虚拟ip:10.0.1.100   只显示10.0.1.139的内容,不显示10.0.1.140的内容   ?


排查:
1. 防火墙已关闭 
2.端口已确认都是8080 
3.也能ping通 
4.二台后端服务器正常运行 
5.浏览器缓存已清理 
6.刷新了几十遍,就是不显示另外一台服务器的内容  
7.已重启keepalived    



解决:MASTER  BACKUP 变量要设置大写,而且一个为主一个从

posted @ 2024-04-01 18:15  三思博客  阅读(0)  评论(0编辑  收藏  举报