欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

keepalived + nginx + tomcat+memcached+高可用主从热备+负载均衡

程序员文章站 2022-06-13 21:45:00
...

keepalived + nginx + tomcat来实现HA的负载均衡(HA=高可用)

 

注:

 

此文未考虑session共享 ---> 负载均衡tomcat时利用memcached实现session共享 请参考另一篇博客

 

设备:

 

两台keepalived + nginx  keepalived和nginx同一台服务器都要安装  IP为 192.168.159.31和192.168.159.34

 

两台 tomcat服务器       IP为 192.168.159.32和192.168.159.33

 

 

第一步:nginx实现负载均衡

 

1:配置nginx.conf  (我主要贴出来重要的代码)

 

upstream you { # 这个是负载均衡哪几台服务器

server 192.168.159.32:8080;

server 192.168.159.33:8080;

}

 

server {

 

......

 

location / {

root   html;

index  index.html index.htm;

proxy_pass http://you;  # 引用定义的you

}

 

 

......

 

 

}

 

2:两台nginx都需要配置上述代码

 

3:把两台的tomcat都启动;可以启动一台nginx(192.168.159.31); 

 

 然后浏览器中输入192.168.159.31 即可在页面上看到访问了不同的tomcat(可以修改index.jsp来区分tomcat)

 

第二步:利用keepalived 来实现高可用

 

1:上述已经表明两台keepalived的IP为 192.168.159.31和192.168.159.34 

 

2:此处规定 192.168.159.31为MASTER(主)  192.168.159.34为BACKUP(备)  虚拟IP为 192.168.159.200

 

3:配置/etc/keepalived/keepalived.conf (一般就是这个路径)

 

代码如下:

 

! Configuration File for keepalived

 

global_defs {

  notification_email {

root@localhost

  }

  notification_email_from hello@localhost

  smtp_server 127.0.0.1

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

 

vrrp_script check_nginx {

  script "/home/check_nginx.sh"  #在/home下创建check_nginx.sh

  interval 2

  weight 2

}

 

vrrp_instance VI_1 {

state MASTER #在另一台上为BACKUP

interface eth0

virtual_router_id 51

priority 199 #在另一台上修改小点,最好相差50 

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.159.200/24 dev eth0 label eth0:1  #绑定虚拟IP(VIP) 此IP为浏览器访问的IP

}

track_script {

  check_nginx 

}

}

 

 

4:vi /home/check_nginx

 

#!/bin/bash

#

URL="http://192.168.159.31" #此处对应nginx的IP地址

code=`curl -I -m 5 -o /dev/null -s -w %{http_code} $URL`  #检测nginx是否还活着

if [ $code -ne 200 ];then

 sleep 2

 code=`curl -I -m 5 -o /dev/null -s -w %{http_code} $URL`

 if [ $code -ne 200 ];then

`service keepalived stop`

 fi

fi

 

5:上述 3和4部 两台keepalived+nginx上都要执行 并做相应的修改

 

 

第三步:

 

1:启动tomcat,nginx,keepalived

 

2:查看主keepalived上  ifcofig 可以看到虚拟IP;备keepalived上 并没有虚拟IP

 

3:页面输入 192.168.159.200(VIP) 即可访问

 

4:把主keepalived(192.168.159.31)上 停止nginx 此时在查看ifconfig  发现没有虚拟IP了

 

在备keepaived上 可以看到有虚拟IP 

5:页面输入 192.168.159.200(VIP) 还是可以正常的访问

 

 

结束:

 

这样就完成了高可用,IP漂移