keepalived高可用三主热备架构(keepalived+nginx+tomcat)

[复制链接]
发表于 昨天 20:30 来自手机 | 显示全部楼层 |阅读模式

1、捏造环境准备:

脚色主机名软件IP地点
用户client192.168.250.90
keepalivedVip                        192.168.250.100
                        192.168.250.101
                        192.168.250.101
                       
                       
masterserverakeepalived、nginx192.168.250.30
backupserverbkeepalived、nginx192.168.250.31
backupserverckeepalived、nginx192.168.250.32
webtomcat1tomcat192.168.250.41
webtomcat2tomcat192.168.250.42
                        web
                       
tomcat3tomcat192.168.250.43
DNS轮询DNSnginx192.168.250.11
留意:开始搭建之前确保全部捏造机防火墙和selinux都要关闭 
2、搭建tomcat

(1)搭建JDK环境
  1. wget https://download.oracle.com/java/21/latest/jdk21_linux-x64_bin.tar.gz
复制代码
将JDK21的压缩包利用tar下令压缩到/usr/local目次下
  1. tar -zxf jdk-21_linux-x64_bin.tar.gz -C /usr/local/
复制代码
进入/etc/profile目次下参加以下内容:
  1. export JAVA_HOME=/usr/local/jdk-21.0.6/
  2. export PATH=$PATH:$JAVA_HOME/bin
复制代码
利用source /etc/profile 加载文件
检察java环境是否搭建乐成,利用java -version 查询java的版本
  1. [root@tomcat1 ~]# java -version
  2. java version "21.0.6" 2025-01-21 LTS
  3. Java(TM) SE Runtime Environment (build 21.0.6+8-LTS-188)
  4. Java HotSpot(TM) 64-Bit Server VM (build 21.0.6+8-LTS-188, mixed mode, sharing)
复制代码
(2)搭建web页面

tomcat1

下载tomcat压缩包:
  1. wget https://dlcdn.apache.org/tomcat/tomcat11/v11.0.5/bin/apache-tomcat-11.0.5.tar.gz
复制代码
 将压缩包解压到/usr/local下
  1. tar -zxf apache-tomcat-11.0.5.tar.gz -C /usr/local/
复制代码
在/etc/profile目次下添加如下内容:
  1. export TOMCAT_HOME=/usr/local/apache-tomcat-11.0.5
  2. export PATH=$PATH:$TOMCAT_HOME/bin
复制代码
这时环境变量就添加好了,利用source /etc/profile重新加载文件,然后利用startup.sh启动tomcat如下:
  1. [root@tomcat1 ~]# startup.sh
  2. Using CATALINA_BASE:   /usr/local/apache-tomcat-11.0.5
  3. Using CATALINA_HOME:   /usr/local/apache-tomcat-11.0.5
  4. Using CATALINA_TMPDIR: /usr/local/apache-tomcat-11.0.5/temp
  5. Using JRE_HOME:        /usr/local/jdk-21.0.6/
  6. Using CLASSPATH:       /usr/local/apache-tomcat-11.0.5/bin/bootstrap.jar:/usr/local/apache-tomcat-11.0.5/bin/tomcat-juli.jar
  7. Using CATALINA_OPTS:   
  8. Tomcat started.
复制代码
重新界说web页面
  1. cd /usr/local/apache-tomcat-11.0.5/webapps/ROOT/
复制代码
删除此目次下的全部内容,再重新界说一个以.jsp末端的文件:
  1. [root@tomcat1 ROOT]# rm -rf *
  2. [root@tomcat1 ROOT]# vim index.jsp
复制代码
index.jsp中的内容可任意界说(这里我们方便区别别的两台tomcat界说成ip地点加主机名)
  1. [root@tomcat1 ROOT]# cat index.jsp
  2. tomcat1 192.168.250.41
复制代码
此时我们在欣赏器输入http://192.168.250.41:8080验证tomcat是否乐成

已经乐成看到我们自界说的内容!!
还剩别的两台tomcat和第一台的搭建一摸一样唯一差别的就是自界说的web界面:
tomcat2

利用scp下令将tomcat1上的jdk文件和tomcat文件传到tomcat2上:
  1. scp -r /usr/local/jdk-21.0.6/ root@192.168.250.42:/usr/local
  2. scp -r /usr/local/apache-tomcat-11.0.5/ root@192.168.250.42:/usr/local
复制代码
 再在tomcat2上检察文件是否传送乐成:
  1. [root@tomcat2 ~]# ls /usr/local/
  2. apache-tomcat-11.0.5  bin  etc  games  include  jdk-21.0.6  lib  lib64  libexec  sbin  share  src
复制代码
再将tomcat1上的/etc/profile文件传到tomcat2上:
  1. [root@tomcat1 ~]# scp /etc/profile root@192.168.250.42:/etc
复制代码
检察tomcat2上/etc/profile文件下的倒数四行,是否传送乐成:
  1. [root@tomcat2 ~]# tail -n -4 /etc/profile
  2. export JAVA_HOME=/usr/local/jdk-21.0.6/
  3. export PATH=$PATH:$JAVA_HOME/bin
  4. export TOMCAT_HOME=/usr/local/apache-tomcat-11.0.5
  5. export PATH=$PATH:$TOMCAT_HOME/bin
复制代码
传送乐成!!此时须要利用source /etc/profile 更新文件再利用java -version 和startup.sh 启动tomcat
  1. [root@tomcat2 ~]# source /etc/profile
  2. [root@tomcat2 ~]# java -version
  3. java version "21.0.6" 2025-01-21 LTS
  4. Java(TM) SE Runtime Environment (build 21.0.6+8-LTS-188)
  5. Java HotSpot(TM) 64-Bit Server VM (build 21.0.6+8-LTS-188, mixed mode, sharing)
  6. [root@tomcat2 ~]# startup.sh
  7. Using CATALINA_BASE:   /usr/local/apache-tomcat-11.0.5
  8. Using CATALINA_HOME:   /usr/local/apache-tomcat-11.0.5
  9. Using CATALINA_TMPDIR: /usr/local/apache-tomcat-11.0.5/temp
  10. Using JRE_HOME:        /usr/local/jdk-21.0.6/
  11. Using CLASSPATH:       /usr/local/apache-tomcat-11.0.5/bin/bootstrap.jar:/usr/local/apache-tomcat-11.0.5/bin/tomcat-juli.jar
  12. Using CATALINA_OPTS:   
  13. Tomcat started.
复制代码
重新界说web界面:
  1. cd /usr/local/apache-tomcat-11.0.5/webapps/ROOT/
复制代码
删除此目次下的全部内容,再重新界说一个以.jsp末端的文件:
  1. [root@tomcat1 ROOT]# rm -rf *
  2. [root@tomcat1 ROOT]# vim index.jsp
复制代码
这里我们将tomcat2上的web界面界说为:
  1. [root@tomcat2 ~]# cat /usr/local/apache-tomcat-11.0.5/webapps/ROOT/index.jsp
  2. tomcat2 192.168.250.42
复制代码
再在欣赏器中输入:http//192.168.250.42:8080检察

tomcat3

和tomcat2一样先从tomcat1大将jdk以及tomcat传到本机上再将/etc/profile也传到本机上再启动tomcat末了自界说web页面然后测试是否见效:
传送文件:
  1. scp -r /usr/local/jdk-21.0.6/ root@192.168.250.42:/usr/local
  2. scp -r /usr/local/apache-tomcat-11.0.5/ root@192.168.250.42:/usr/localscp /etc/profile root@192.168.250.42:/etc
复制代码
 启动tomcat:
  1. [root@tomcat3 ~]# startup.sh
  2. Using CATALINA_BASE:   /usr/local/apache-tomcat-11.0.5
  3. Using CATALINA_HOME:   /usr/local/apache-tomcat-11.0.5
  4. Using CATALINA_TMPDIR: /usr/local/apache-tomcat-11.0.5/temp
  5. Using JRE_HOME:        /usr/local/jdk-21.0.6/
  6. Using CLASSPATH:       /usr/local/apache-tomcat-11.0.5/bin/bootstrap.jar:/usr/local/apache-tomcat-11.0.5/bin/tomcat-juli.jar
  7. Using CATALINA_OPTS:   
  8. Tomcat started.
复制代码
重新界说页面:
  1. [root@tomcat3 ~]# cat /usr/local/apache-tomcat-11.0.5/webapps/ROOT/index.jsp
  2. tomcat3 192.168.250.43
复制代码
在欣赏器中输入http://192.168.250.43:8080

web服务全部搭建完成!!!
3、搭建keepalived高可用与主热备架构:

设置nginx

在servera上面下载nginx、keepalived软件:
  1. dnf install nginx keepalived -y
复制代码
servera

在/etc/nginx/conf.d下创建以.conf末端的文件并写入以下内容:
  1. [root@servera ~]# cat /etc/nginx/conf.d/servera.conf
  2. upstream tomcat1 {
  3.         server 192.168.250.41:8080;
  4.         server 192.168.250.42:8080;
  5.         server 192.168.250.43:8080;
  6. }
  7. server {
  8.         listen 80;
  9.         server_name 192.168.250.30;
  10.         access_log /var/log/nginx/master_access.log;
  11.         error_log /var/log/nginx/master_error.log;
  12.         location / {
  13.                 proxy_pass   http://tomcat1;
  14.         }
  15. }
复制代码
启动nginx并利用curl测试是否轮询访问:
  1. [root@servera ~]#
  2. systemctl start nginx
  3. [root@servera ~]# curl 192.168.250.30
  4. tomcat1 192.168.250.41
  5. [root@servera ~]# curl 192.168.250.30
  6. tomcat2 192.168.250.42
  7. [root@servera ~]# curl 192.168.250.30
  8. tomcat3 192.168.250.43
复制代码
测试乐成!!!!
serverb

同上述servera一样先下载软件再编写设置文件末了测试:
  1. [root@serverb ~]#
  2. dnf install nginx keepalived -y[root@serverb ~]# cat /etc/nginx/conf.d/serverb.conf upstream tomcat2 {        server 192.168.250.41:8080;        server 192.168.250.42:8080;        server 192.168.250.43:8080;}server {        listen 80;        server_name 192.168.250.31;        access_log /var/log/nginx/master_access.log;        error_log /var/log/nginx/master_error.log;        location / {                proxy_pass   http://tomcat2;        }}
  3. systemctl start nginx[root@serverb ~]# curl 192.168.250.31tomcat1 192.168.250.41[root@serverb ~]# curl 192.168.250.31tomcat2 192.168.250.42[root@serverb ~]# curl 192.168.250.31tomcat3 192.168.250.43
复制代码
serverc

同上:
  1. [root@serverb ~]#
  2. dnf install nginx keepalived -y[root@serverb ~]# cat /etc/nginx/conf.d/serverc.conf upstream tomcat3 {        server 192.168.250.41:8080;        server 192.168.250.42:8080;        server 192.168.250.43:8080;}server {        listen 80;        server_name 192.168.250.32;        access_log /var/log/nginx/master_access.log;        error_log /var/log/nginx/master_error.log;        location / {                proxy_pass   http://tomcat3;        }}
  3. systemctl start nginx[root@serverb ~]# curl 192.168.250.32tomcat1 192.168.250.41[root@serverb ~]# curl 192.168.250.32tomcat2 192.168.250.42[root@serverb ~]# curl 192.168.250.32tomcat3 192.168.250.43
复制代码
设置keepalived高可用

servera

编写脚本实现高可用:
脚本文件放在/etc/keepalived下
  1. [root@servera ~]# cat /etc/keepalived/check_nginx.sh
  2. #!/bin/bash
  3. counter=$(ps -C nginx --no-header| wc -l)
  4. if [ $counter -eq 0 ]; then
  5.        
  6. systemctl start nginx
  7.         if [ `ps -C nginx --no-header| wc -l` -eq 0 ]; then
  8.                 systemctl stop keepalived
  9.         fi
  10. fi
复制代码
给脚本文件赋权:
  1. chmod +x /etc/keepalived/check_nginx.sh
复制代码
 检察是否赋权乐成:

打开keepalived的设置文件举行如下修改:
  1. global_defs {
  2.    router_id MASTER
  3. }
  4. vrrp_script chk_nginx {
  5.     script "/etc/keepalived/check_nginx.sh"
  6.     interval 2
  7. }
  8. vrrp_instance VI_1 {
  9.     state MASTER
  10.     interface ens160
  11.     virtual_router_id 51
  12.     priority 100
  13.     advert_int 1
  14.     authentication {
  15.         auth_type PASS
  16.         auth_pass 1111
  17.     }
  18.     virtual_ipaddress {
  19.         192.168.250.100
  20.     }
  21.     track_script {
  22.         chk_nginx
  23.     }
  24. }
  25. global_defs {
  26.    router_id BACKUP
  27. }
  28. vrrp_script chk_nginx {
  29.     script "/etc/keepalived/check_nginx.sh"
  30.     interval 2
  31. }
  32. vrrp_instance VI_2 {
  33.     state BACKUP
  34.     interface ens160
  35.     virtual_router_id 52
  36.     priority 80
  37.     advert_int 1
  38.     authentication {
  39.         auth_type PASS
  40.         auth_pass 1111
  41.     }
  42.     virtual_ipaddress {
  43.         192.168.250.101
  44.     }
  45.     track_script {
  46.         chk_nginx
  47.     }
  48. }
  49. global_defs {
  50.    router_id BACKUP
  51. }
  52. vrrp_script chk_nginx {
  53.     script "/etc/keepalived/check_nginx.sh"
  54.     interval 2
  55. }
  56. vrrp_instance VI_3 {
  57.     state BACKUP
  58.     interface ens160
  59.     virtual_router_id 53
  60.     priority 60
  61.     advert_int 1
  62.     authentication {
  63.         auth_type PASS
  64.         auth_pass 1111
  65.     }
  66.     virtual_ipaddress {
  67.         192.168.250.102
  68.     }
  69.     track_script {
  70.         chk_nginx
  71.     }
  72. }
复制代码
启动keepalived服务检察是否出现漂移IP
  1. systemctl start keepalived
  2. [root@servera ~]# ip ad
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  4.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  5.     inet 127.0.0.1/8 scope host lo
  6.        valid_lft forever preferred_lft forever
  7.     inet6 ::1/128 scope host
  8.        valid_lft forever preferred_lft forever
  9. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  10.     link/ether 00:0c:29:ee:31:81 brd ff:ff:ff:ff:ff:ff
  11.     altname enp3s0
  12.     inet 192.168.250.30/24 brd 192.168.250.255 scope global noprefixroute ens160
  13.        valid_lft forever preferred_lft forever
  14.     inet 192.168.250.100/32 scope global ens160
  15.        valid_lft forever preferred_lft forever
  16.     inet6 fe80::20c:29ff:feee:3181/64 scope link noprefixroute
  17.        valid_lft forever preferred_lft forever
复制代码
 此时出现的inet 192.168.250.100/32 scope global ens160就是漂移ip
修改nginx设置文件,将server_nameIP改成漂移IP即192.168.250.100
  1. [root@servera ~]# cat /etc/nginx/conf.d/servera.conf
  2. upstream tomcat1 {
  3.         server 192.168.250.41:8080;
  4.         server 192.168.250.42:8080;
  5.         server 192.168.250.43:8080;
  6. }
  7. server {
  8.         listen 80;
  9.         server_name 192.168.250.100;
  10.         access_log /var/log/nginx/master_access.log;
  11.         error_log /var/log/nginx/master_error.log;
  12.         location / {
  13.                 proxy_pass   http://tomcat1;
  14.         }
  15. }
复制代码
重新启动nginx服务 
serverb

设置同上(特殊须要留意的是要留意keepalived设置文件中三个漂移ip的优先级)
将servera的脚本文件拷贝到serverb中
  1. scp /etc/keepalived/check_nginx.sh root@192.168.250.31:/keepalived/
复制代码
修改keepalived的设置文件:
  1. [root@serverb ~]# cat /etc/keepalived/keepalived.conf
  2. global_defs {
  3.    router_id BACKUP
  4. }
  5. vrrp_script chk_nginx {
  6.     script "/etc/keepalived/check_nginx.sh"
  7.     interval 2
  8. }
  9. vrrp_instance VI_1 {
  10.     state BACKUP
  11.     interface ens160
  12.     virtual_router_id 51
  13.     priority 60
  14.     advert_int 1
  15.     authentication {
  16.         auth_type PASS
  17.         auth_pass 1111
  18.     }
  19.     virtual_ipaddress {
  20.         192.168.250.100
  21.     }
  22.     track_script {
  23.         chk_nginx
  24.     }
  25. }
  26. global_defs {
  27.    router_id MASTER
  28. }
  29. vrrp_script chk_nginx {
  30.     script "/etc/keepalived/check_nginx.sh"
  31.     interval 2
  32. }
  33. vrrp_instance VI_2 {
  34.     state MASTER
  35.     interface ens160
  36.     virtual_router_id 52
  37.     priority 100
  38.     advert_int 1
  39.     authentication {
  40.         auth_type PASS
  41.         auth_pass 1111
  42.     }
  43.     virtual_ipaddress {
  44.         192.168.250.101
  45.     }
  46.     track_script {
  47.         chk_nginx
  48.     }
  49. }
  50. global_defs {
  51.    router_id BACKUP
  52. }
  53. vrrp_script chk_nginx {
  54.     script "/etc/keepalived/check_nginx.sh"
  55.     interval 2
  56. }
  57. vrrp_instance VI_3 {
  58.     state BACKUP
  59.     interface ens160
  60.     virtual_router_id 53
  61.     priority 80
  62.     advert_int 1
  63.     authentication {
  64.         auth_type PASS
  65.         auth_pass 1111
  66.     }
  67.     virtual_ipaddress {
  68.         192.168.250.102
  69.     }
  70.     track_script {
  71.         chk_nginx
  72.     }
  73. }
复制代码
启动keepalived服务检察漂移ip
  1. [root@serverb ~]# systemctl start keepalived
  2. [root@serverb ~]# ip ad
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  4.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  5.     inet 127.0.0.1/8 scope host lo
  6.        valid_lft forever preferred_lft forever
  7.     inet6 ::1/128 scope host
  8.        valid_lft forever preferred_lft forever
  9. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  10.     link/ether 00:0c:29:c2:e1:65 brd ff:ff:ff:ff:ff:ff
  11.     altname enp3s0
  12.     inet 192.168.250.31/24 brd 192.168.250.255 scope global noprefixroute ens160
  13.        valid_lft forever preferred_lft forever
  14.     inet 192.168.250.101/32 scope global ens160
  15.        valid_lft forever preferred_lft forever
  16.     inet6 fe80::20c:29ff:fec2:e165/64 scope link noprefixroute
  17.        valid_lft forever preferred_lft forever
复制代码
 此时出现的inet 192.168.250.101/32 scope global ens160就是漂移ip
修改nginx设置文件将server_name 改成漂移ip即192.168.250.101
  1. [root@serverb ~]# cat /etc/nginx/conf.d/serverb.conf
  2. upstream tomcat2 {
  3.         server 192.168.250.41:8080;
  4.         server 192.168.250.42:8080;
  5.         server 192.168.250.43:8080;
  6. }
  7. server {
  8.         listen 80;
  9.         server_name 192.168.250.101;
  10.         access_log /var/log/nginx/master_access.log;
  11.         error_log /var/log/nginx/master_error.log;
  12.         location / {
  13.                 proxy_pass   http://tomcat2;
  14.         }
  15. }
复制代码
再重启nginx服务
serverc

同上设置:
将脚本文件拷贝到serverc上,再修改keepalived设置文件,再启动keepalived服务检察漂移ip末了修改nginx服务的设置文件中的server_name修改成漂移文件代码如下:
  1. scp /etc/keepalived/check_nginx.sh root@192.168.250.32:/etc/keepalived/
  2. [root@serverc ~]# cat /etc/keepalived/keepalived.conf
  3. global_defs {
  4.    router_id BACKUP
  5. }
  6. vrrp_script chk_nginx {
  7.     script "/etc/keepalived/check_nginx.sh"
  8.     interval 2
  9. }
  10. vrrp_instance VI_1 {
  11.     state BACKUP
  12.     interface ens160
  13.     virtual_router_id 51
  14.     priority 80
  15.     advert_int 1
  16.     authentication {
  17.         auth_type PASS
  18.         auth_pass 1111
  19.     }
  20.     virtual_ipaddress {
  21.         192.168.250.100
  22.     }
  23.     track_script {
  24.         chk_nginx
  25.     }
  26. }
  27. global_defs {
  28.    router_id BACKUP
  29. }
  30. vrrp_script chk_nginx {
  31.     script "/etc/keepalived/check_nginx.sh"
  32.     interval 2
  33. }
  34. vrrp_instance VI_2 {
  35.     state BACKUP
  36.     interface ens160
  37.     virtual_router_id 52
  38.     priority 60
  39.     advert_int 1
  40.     authentication {
  41.         auth_type PASS
  42.         auth_pass 1111
  43.     }
  44.     virtual_ipaddress {
  45.         192.168.250.101
  46.     }
  47.     track_script {
  48.         chk_nginx
  49.     }
  50. }
  51. global_defs {
  52.    router_id MASTER
  53. }
  54. vrrp_script chk_nginx {
  55.     script "/etc/keepalived/check_nginx.sh"
  56.     interval 2
  57. }
  58. vrrp_instance VI_3 {
  59.     state MASTER
  60.     interface ens160
  61.     virtual_router_id 53
  62.     priority 100
  63.     advert_int 1
  64.     authentication {
  65.         auth_type PASS
  66.         auth_pass 1111
  67.     }
  68.     virtual_ipaddress {
  69.         192.168.250.102
  70.     }
  71.     track_script {
  72.         chk_nginx
  73.     }
  74. }
  75. [root@serverc ~]# systemctl restart keepalived.service
  76. [root@serverc ~]# ip ad
  77. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  78.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  79.     inet 127.0.0.1/8 scope host lo
  80.        valid_lft forever preferred_lft forever
  81.     inet6 ::1/128 scope host
  82.        valid_lft forever preferred_lft forever
  83. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  84.     link/ether 00:0c:29:50:ff:3f brd ff:ff:ff:ff:ff:ff
  85.     altname enp3s0
  86.     inet 192.168.250.32/24 brd 192.168.250.255 scope global noprefixroute ens160
  87.        valid_lft forever preferred_lft forever
  88.     inet 192.168.250.102/32 scope global ens160
  89.        valid_lft forever preferred_lft forever
  90.     inet6 fe80::20c:29ff:fe50:ff3f/64 scope link noprefixroute
  91.        valid_lft forever preferred_lft forever
  92. [root@serverc ~]# cat /etc/nginx/conf.d/serverc.conf
  93. upstream tomcat3 {
  94.         server 192.168.250.41:8080;
  95.         server 192.168.250.42:8080;
  96.         server 192.168.250.43:8080;
  97. }
  98. server {
  99.         listen 80;
  100.         server_name 192.168.250.102;
  101.         access_log /var/log/nginx/master_access.log;
  102.         error_log /var/log/nginx/master_error.log;
  103.         location / {
  104.                 proxy_pass   http://tomcat3;
  105.         }
  106. }
复制代码
4、设置DNS轮询

在dns主机上下载nginx
  1. dnf install nginx -y
复制代码
写入设置文件:
  1. [root@dns ~]# cat /etc/nginx/conf.d/dns.conf
  2. upstream web {
  3.         server 192.168.250.100;
  4.         server 192.168.250.101;
  5.         server 192.168.250.102;
  6. }
  7. server {
  8.         listen 80;
  9.         server_name 192.168.250.11;
  10.         access_log /var/log/nginx/access_dns.log;
  11.         error_log /var/log/nginx/error_dns.log;
  12.         location / {
  13.                 proxy_pass http://web;
  14.         }
  15. }
复制代码
 启动nginx服务
  1. systemctl start nginx
复制代码
5、测试:

(1)测试高可用

将servera、serverb、serverc上的nginx服务关闭再检察nginx的历程是否存在:
servera
  1. [root@servera ~]# systemctl stop nginx
  2. [root@servera ~]# ps -ef | grep nginx
  3. root        5650       1  0 15:20 ?        00:00:00 nginx: master process /usr/sbin/nginx
  4. nginx       5651    5650  0 15:20 ?        00:00:00 nginx: worker process
  5. nginx       5652    5650  0 15:20 ?        00:00:00 nginx: worker process
  6. nginx       5653    5650  0 15:20 ?        00:00:00 nginx: worker process
  7. nginx       5654    5650  0 15:20 ?        00:00:00 nginx: worker process
  8. root        5675    1509  0 15:20 pts/0    00:00:00 grep --color=auto nginx
复制代码
serverb
  1. [root@serverb ~]# systemctl stop nginx
  2. [root@serverb ~]# ps -ef | grep nginx
  3. root        5592       1  0 15:21 ?        00:00:00 nginx: master process /usr/sbin/nginx
  4. nginx       5593    5592  0 15:21 ?        00:00:00 nginx: worker process
  5. nginx       5594    5592  0 15:21 ?        00:00:00 nginx: worker process
  6. nginx       5595    5592  0 15:21 ?        00:00:00 nginx: worker process
  7. nginx       5596    5592  0 15:21 ?        00:00:00 nginx: worker process
  8. root        5605    1472  0 15:21 pts/0    00:00:00 grep --color=auto nginx
复制代码
serverc
  1. [root@serverc ~]# systemctl stop nginx
  2. [root@serverc ~]# ps -ef | grep nginx
  3. root        5530       1  0 15:22 ?        00:00:00 nginx: master process /usr/sbin/nginx
  4. nginx       5531    5530  0 15:22 ?        00:00:00 nginx: worker process
  5. nginx       5532    5530  0 15:22 ?        00:00:00 nginx: worker process
  6. nginx       5533    5530  0 15:22 ?        00:00:00 nginx: worker process
  7. nginx       5534    5530  0 15:22 ?        00:00:00 nginx: worker process
  8. root        5544    1474  0 15:22 pts/0    00:00:00 grep --color=auto nginx
复制代码
 测试高可用乐成!!!
(2)测试DNS轮询

在client主机上利用curl下令分别测试192.168.250.100、192.168.250.101、192.168.250.102
  1. [root@client ~]# curl 192.168.250.100
  2. tomcat2 192.168.250.42
  3. [root@client ~]# curl 192.168.250.100
  4. tomcat3 192.168.250.43
  5. [root@client ~]# curl 192.168.250.100
  6. tomcat1 192.168.250.41
  7. [root@client ~]# curl 192.168.250.101
  8. tomcat1 192.168.250.41
  9. [root@client ~]# curl 192.168.250.101
  10. tomcat2 192.168.250.42
  11. [root@client ~]# curl 192.168.250.101
  12. tomcat3 192.168.250.43
  13. [root@client ~]# curl 192.168.250.102
  14. tomcat1 192.168.250.41
  15. [root@client ~]# curl 192.168.250.102
  16. tomcat2 192.168.250.42
  17. [root@client ~]# curl 192.168.250.102
  18. tomcat3 192.168.250.43
复制代码
测试乐成!!!
(3)测试三主热备架构

 将servera上的keepalived服务关闭,再去客户机上利用curl下令测试:
  1. [root@servera ~]# systemctl stop keepalived.service
复制代码
此时捏造ip消散,出现在serverc主机上:
  1. [root@servera ~]# ip ad
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5.        valid_lft forever preferred_lft forever
  6.     inet6 ::1/128 scope host
  7.        valid_lft forever preferred_lft forever
  8. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  9.     link/ether 00:0c:29:ee:31:81 brd ff:ff:ff:ff:ff:ff
  10.     altname enp3s0
  11.     inet 192.168.250.30/24 brd 192.168.250.255 scope global noprefixroute ens160
  12.        valid_lft forever preferred_lft forever
  13.     inet6 fe80::20c:29ff:feee:3181/64 scope link noprefixroute
  14.        valid_lft forever preferred_lft forever
复制代码
  1. [root@serverc ~]# ip ad
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5.        valid_lft forever preferred_lft forever
  6.     inet6 ::1/128 scope host
  7.        valid_lft forever preferred_lft forever
  8. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  9.     link/ether 00:0c:29:50:ff:3f brd ff:ff:ff:ff:ff:ff
  10.     altname enp3s0
  11.     inet 192.168.250.32/24 brd 192.168.250.255 scope global noprefixroute ens160
  12.        valid_lft forever preferred_lft forever
  13.     inet 192.168.250.102/32 scope global ens160
  14.        valid_lft forever preferred_lft forever
  15.     inet 192.168.250.100/32 scope global ens160
  16.        valid_lft forever preferred_lft forever
  17.     inet6 fe80::20c:29ff:fe50:ff3f/64 scope link noprefixroute
  18.        valid_lft forever preferred_lft forever
复制代码
利用curl测试:
  1. [root@client ~]# curl 192.168.250.100
  2. tomcat1 192.168.250.41
  3. [root@client ~]# curl 192.168.250.100
  4. tomcat2 192.168.250.42
  5. [root@client ~]# curl 192.168.250.100
  6. tomcat3 192.168.250.43
复制代码
同理将serverb上的keepalived服务关闭再检察捏造ip
  1. [root@serverb ~]# systemctl stop keepalived.service
  2. [root@serverb ~]# ip ad
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  4.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  5.     inet 127.0.0.1/8 scope host lo
  6.        valid_lft forever preferred_lft forever
  7.     inet6 ::1/128 scope host
  8.        valid_lft forever preferred_lft forever
  9. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  10.     link/ether 00:0c:29:c2:e1:65 brd ff:ff:ff:ff:ff:ff
  11.     altname enp3s0
  12.     inet 192.168.250.31/24 brd 192.168.250.255 scope global noprefixroute ens160
  13.        valid_lft forever preferred_lft forever
  14.     inet6 fe80::20c:29ff:fec2:e165/64 scope link noprefixroute
  15.        valid_lft forever preferred_lft forever
复制代码
 此时的捏造ip全部在serverc上:
  1. [root@serverc ~]# ip ad
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5.        valid_lft forever preferred_lft forever
  6.     inet6 ::1/128 scope host
  7.        valid_lft forever preferred_lft forever
  8. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  9.     link/ether 00:0c:29:50:ff:3f brd ff:ff:ff:ff:ff:ff
  10.     altname enp3s0
  11.     inet 192.168.250.32/24 brd 192.168.250.255 scope global noprefixroute ens160
  12.        valid_lft forever preferred_lft forever
  13.     inet 192.168.250.102/32 scope global ens160
  14.        valid_lft forever preferred_lft forever
  15.     inet 192.168.250.100/32 scope global ens160
  16.        valid_lft forever preferred_lft forever
  17.     inet 192.168.250.101/32 scope global ens160
  18.        valid_lft forever preferred_lft forever
  19.     inet6 fe80::20c:29ff:fe50:ff3f/64 scope link noprefixroute
  20.        valid_lft forever preferred_lft forever
复制代码
再在客户端上测试DNS轮询检察是否乐成:
  1. [root@client ~]# curl 192.168.250.100
  2. tomcat1 192.168.250.41
  3. [root@client ~]# curl 192.168.250.100
  4. tomcat2 192.168.250.42
  5. [root@client ~]# curl 192.168.250.100
  6. tomcat3 192.168.250.43
  7. [root@client ~]# curl 192.168.250.101tomcat1 192.168.250.41[root@client ~]# curl 192.168.250.101tomcat2 192.168.250.42[root@client ~]# curl 192.168.250.101tomcat3 192.168.250.43[root@client ~]# curl 192.168.250.102tomcat1 192.168.250.41[root@client ~]# curl 192.168.250.102tomcat2 192.168.250.42[root@client ~]# curl 192.168.250.102tomcat3 192.168.250.43
复制代码
测试乐成!!!!三主热备架构高可用搭建完成!!!
6、总结

在本次实验中,最须要留意的就是keepalived的设置文件,由于有三个捏造ip以是优先级,肯定要按序次写,一共是三组,如果逻辑头脑不强的同砚可以现在记事本中分好组再写入设置文件,以免出现keepalived设置文件堕落导致keepalived服务启动失败的错误。别的还要留意高可用的脚本,语法精确否则高可用会失败。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表