[DNSポーリング] --- [Nginx + keepalived高可用性] --- [アプリケーション層{apache(mycloud)、tomcat(monitor)}] --- [ストレージ層(mysql)+マスタースレーブレプリケーション] --- NFS共有

ディレクトリ
1。プロジェクトの説明
11.1ロジックトポロジ図
11.2プロジェクトの説明12
プロジェクトの展開2

  1. データベースの展開
    21.1展開環境
    21.2データベースのインストール
    21.3マスタースレーブレプリケーション
    31.4Atlasの負荷分散の実現4
  2. apache + phpのデプロイ
    72.1 httpdのインストール(2台のマシンの操作は同じです)7
    2.2phpのインストール
    82.3phpを分析するためのapacheの設定
    82.4Discuzフォーラムのデプロイ9
  3. Tomcatのデプロイメント(2台のマシンは同じ操作を行います)10
    3.1jdk環境のインストール
    103.2tomcatのインストール103.3
    アプリケーションのデプロイメントの監視10
  4. Nginxのデプロイ(2台のマシンの操作は同じ)12
    4.1nginxのインストール124.2
    モニターのインストール134.3
    apache、tomcatリバースプロキシの構成(2台のマシンは同じ)13
  5. Keepalivedは2つのnginx高可用性を実現します165.1
    4つのアプリケーションサーバーを構成します(操作は同じです)16
    5.2 keepalivedデプロイメント(マスター)17
    5.2 keepalivedデプロイメント(スレーブ)19
  6. 負荷分散を実現するためのDNSポーリングnginx21

1。プロジェクトの説明
1.1論理トポロジ図

ここに画像の説明を挿入します

DNSの変更:両方のnginxがURLと一致し、nginxをポーリングして負荷分散を実現します。
nginx構成ファイルは負荷分散を実現するためにアップストリームに設定され、ロケーションマッチングは動的および静的分離を実現するために設定され、2つのnginxはkeepalivedを使用して高可用性を実現し、モニターサービスをインストールします。
バックエンドストレージエンドはMySQLデータベースであり、マスタースレーブレプリケーションが実行され、サーバーは読み取りと書き込みの分離を実行するように設定されます(mycat、atlas ...)。
Discuzフォーラムサービスが2台のapacheマシンにインストールされ、バックエンドサーバーがバインドされます。
2台のTomcatマシンは、wgcloud監視サービスをインストールし、バックエンドサーバーをバインドします。
サーバーを起動してNFSを実行し、マウントする4つのディレクトリを作成して、アプリケーション層サービスをマウントします。

1.2プロジェクトの説明
1192.168.9.8 DNS + nginx
2 192.168.9.9 DNS + nginx
3 192.168.9.10 apache + php
4 192.168.9.11 apache + php
5 192.168.9.12 tomcat
6 192.168.9.13 tomcat
7 192.168.9.14 mysql-master
8 192.168 .9.15 mysql-slave
9 192.168.9.16 Atlas
10 192.168.9.17 NFS

二。プロジェクトのデプロイメント
1.データベースのデプロイメント
1.1デプロイメント環境
マスターMySQL192.168.9.14 msql-mMySQL
から
データベースインストールする192.168.9.15mysql-s1.2
マスタースレーブ操作
ここに画像の説明を挿入します

[root@mysql-m tools]# tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  -C /usr/src/
[root@mysql-m tools]# echo $?
0
[root@mysql-m tools]# ln -s /usr/src/mysql-5.7.22-linux-glibc2.12-x86_64/ /usr/local/mysql
[root@mysql-m tools]# echo "export PATH=$PATH:/usr/local/mysql/bin/">> /etc/profile
[root@mysql-m tools]# source /etc/profile
[root@mysql-m tools]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin/
[root@mysql-m tools]# useradd -M -s /sbin/nologin mysql
[root@mysql-m tools]# mysqld --user=mysql --initialize --datadir=/usr/local/mysql/data

ここに画像の説明を挿入します

パスワードを覚える

[root@mysql-m tools]# vim /etc/my.cnf

server-idを同じにすることはできないことに注意してください

[client]
port = 3306
socket = /tmp/mysql.sock
 
[mysqld]
server-id = 1
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
[root@mysql-m tools]# /etc/init.d/mysqld start
[root@mysql-m tools]# mysql -uroot -p"q8jM>?dkuURo"
mysql> set password=password('123123');
mysql> exit

1.3マスタースレーブレプリケーション
mysql-m構成
ホスト構成ファイルの内容を追加

[root@mysql-m ~]# vim /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
 
[mysqld]
server-id = 1
port = 3306
log-bin=/usr/local/mysql/data/bin-log
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
[root@mysql-m ~]# /etc/init.d/mysqld restart
[root@mysql-m ~]# mysql -uroot -p123123
mysql> grant replication slave on *.* to 'repl'@'192.168.9.15' identified by '123123';
mysql> show master status\G;

ここに画像の説明を挿入します

ライブラリからのmysql-s構成

[root@mysql-s tools]# mysql -uroot -p123123
mysql> change master to master_host='192.168.9.14',
    -> master_user='repl',
    -> master_password='123123',
    -> master_log_file='bin-log.000001',
    -> master_log_pos=154;
mysql> start slave;
mysql> show slave status\G;   没有两个yes就多刷两遍

ここに画像の説明を挿入します

この時点で、マスタースレーブレプリケーションが完了します。

1.4Atlasロードバランシングの実装
ここに画像の説明を挿入します

[root@mysql-m tools]# rpm -ivh Atlas-2.2.1.el6.x86_64.rpm

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210201173002356.png)

[root@mysql-m ~]# cd /usr/local/mysql-proxy/bin/
[root@mysql-m bin]# ./encrypt 123123
++gAN07C/Q0=
此密码将在配置文件中使用

[root@mysql-m ~]# cd /usr/local/mysql-proxy/conf/
[root@mysql-m conf]# ls
test.cnf
[root@mysql-m conf]# vim test.cnf 
1
[mysql-proxy]

#带#号的为非必需的配置项目

#管理接口的用户名
admin-username = user

#管理接口的密码
admin-password = pwd

#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
proxy-backend-addresses = 192.168.9.14:3306

#Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔
proxy-read-only-backend-addresses = 192.168.9.15:3306

#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user2为示例,将其替换为你的MySQL的用户名和加密密码!
pwds = repl:++gAN07C/Q0=

#设置Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。
daemon = true

#设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。
keepalive = true

#工作线程数,对Atlas的性能有很大影响,可根据情况适当设置
event-threads = 8

#日志级别,分为message、warning、critical、error、debug五个级别
log-level = message

#日志存放的路径
log-path = /usr/local/mysql-proxy/log

#SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日志且实时写入磁盘,默认为OFF
sql-log = ON

#慢日志输出设置。当设置了该参数时,则日志只输出执行时间超过sql-log-slow(单位:ms)的日志记录。不设置该参数则输出全部日志。
#sql-log-slow = 10

#实例名称,用于同一台机器上多个Atlas实例间的区分
#instance = test

#Atlas监听的工作接口IP和端口
proxy-address = 0.0.0.0:1234

#Atlas监听的管理接口IP和端口
admin-address = 0.0.0.0:2345

#分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项
#tables = person.mt.id.3

#默认字符集,设置该项后客户端不再需要执行SET NAMES语句
charset = utf8

#允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所有IP连接,否则只允许列表中的IP连接
#client-ips = 127.0.0.1, 192.168.1

#Atlas前面挂接的LVS的物理网卡的IP(注意不是虚IP),若有LVS且设置了client-ips则此项必须设置,否则可以不设置
#lvs-ips = 192.168.1.1
[root@atlas bin]# cd /usr/local/mysql-proxy/
[root@atlas mysql-proxy]# ./bin/mysql-proxyd start
[root@atlas mysql-proxy]# mysql -uuser -ppwd -h 127.0.0.1 -P2345

2. apache + phpデプロイメント
2.1インストールhttpd(2台のマシンの操作は同じです)
ここに画像の説明を挿入します

yum install gcc gcc-c++ make pcre-devel expat-devel perl wget vim -y

[root@apache-php1 tools]# tar xf apr-1.6.5.tar.gz -C /usr/src/
[root@apache-php1 tools]# tar xf apr-util-1.6.1.tar.gz -C /usr/src/
[root@apache-php1 tools]# tar xf httpd-2.4.38.tar.gz -C /usr/src/
[root@apache-php1 tools]# cd /usr/src/
[root@apache-php1 src]# ls
[root@apache-php1 src]# mv  apr-1.6.5/   httpd-2.4.38/srclib/apr
[root@apache-php1 src]# mv  apr-util-1.6.1/   httpd-2.4.38/srclib/apr-util
[root@apache-php1 src]# cd httpd-2.4.38/
[root@apache-php1 httpd-2.4.38]# ./configure --prefix=/usr/local/httpd --enable-charset-lite --enable-rewrite --enable-cgi --enable-so && make && make install
[root@apache-php1 tools]# useradd -M -s /sbin/nologin apache
[root@apache-php1 tools]# chown -R apache.apache /usr/local/httpd/
[root@apache-php1 tools]# sed -i 's/User daemon/User apache/' /usr/local/httpd/conf/httpd.conf
[root@apache-php1 tools]# sed -i 's/Group daemon/Group apache/' /usr/local/httpd/conf/httpd.conf
修改servername
[root@apache-php1 tools]# sed -i '/#ServerName/ s/#//' /usr/local/httpd/conf/httpd.conf
增加系统命令变量路径
[root@apache-php1 tools]# echo 'PATH=$PATH:/usr/local/httpd/bin/' >> /etc/profile
[root@apache-php1 tools]# . /etc/profile
创建启动脚本并设置开机自启
[root@apache-php1 tools]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@apache-php1 tools]# sed -i '1a# chkconfig: 35 85 15' /etc/init.d/httpd
[root@apache-php1 tools]# head -2 /etc/init.d/httpd
#!/bin/sh
# chkconfig: 35 85 15
[root@apache-php1 tools]# chkconfig --add httpd
[root@apache-php1 tools]# chmod +x /etc/rc.d/rc.local
[root@apache-php1 tools]# echo "/etc/init.d/httpd start" >> /etc/rc.d/rc.local
启动服务测试
[root@apache-php1 tools]# /etc/init.d/httpd start
[root@apache-php1 tools]# netstat -anpt | grep :80
tcp6       0      0 :::80                   :::*                    LISTEN      64521/httpd  
[root@apache-php1 tools]# curl 192.168.1.66
<html><body><h1>It works!</h1></body></html>

2.2phpをインストールする

[root@apache-php1 tools]# yum -y install libjpeg-devel libpng-devel freetype-devel libxml2-devel zlib-devel curl-devel libicu-devel openssl-devel
[root@apache-php1 tools]# tar xf php-7.3.2.tar.gz -C /usr/src/
[root@apache-php1 tools]# cd /usr/src/php-7.3.2/
[root@apache-php1 ./configure  --prefix=/usr/local/php  --with-apxs2=/usr/local/httpd/bin/apxs  --with-mysql-sock=/tmp/mysql.sock  --with-pdo-mysql  --with-mysqli  --with-zlib  --with-curl  --with-gd  --with-jpeg-dir  --with-png-dir  --with-freetype-dir  --with-openssl  --enable-mbstring  --enable-xml  --enable-session  --enable-ftp  --enable-pdo  --enable-tokenizer  --enable-intl && make && make install
创建php.ini配置文件并配置数据库接口
[root@apache-php1 php-7.3.2]# cp php.ini-development /usr/local/php/lib/php.ini
[root@apache-php1 php-7.3.2]# vim /usr/local/php/lib/php.ini
1175 mysqli.default_socket = /tmp/mysql.sock

2.3phpを解析するようにApacheを設定する

[root@apache-php1 php-7.3.2]# vim /usr/local/httpd/conf/httpd.conf
……
258 <IfModule dir_module>
259     DirectoryIndex index.html index.php
260 </IfModule>
……
395     AddType application/x-compress .Z
396     AddType application/x-gzip .gz .tgz
397     AddType application/x-httpd-php .php
398     AddType application/x-httpd-php-source .phps
……
[root@apache-php1 php-7.3.2]# httpd -t
[root@apache-php1 php-7.3.2]# /etc/init.d/httpd stop
[root@apache-php1 php-7.3.2]# /etc/init.d/httpd start

2.4Discuzフォーラムの展開

[root@apache-php2 ~]# yum -y install unzip
[root@apache-php2 ~]#unzip Discuz_X3.3_SC_UTF8.zip
[root@apache-php2 ~]# mv upload/* /usr/local/httpd/htdocs/
[root@apache-php2 ~]#chown -R apache:apache /usr/local/httpd/htdocs
[root@apache-php1 tools]# chmod +777 /usr/local/httpd/htdocs/

ここに画像の説明を挿入します

データベースにログインします

[root@mysql-m ~]# /etc/init.d/mysqld start
[root@mysql-m ~]# mysql -uroot -p123123
mysql>  create database discuz;
mysql> grant all on *.* to 'discuzer'@'192.168.9.%' identified by '123123';

ここに画像の説明を挿入します

3. Tomcatのデプロイメント(2台のマシンの操作は同じです)
3.1jdk環境のインストール

[root@tomcat1 tools]# tar xf jdk-8u60-linux-x64.tar.gz
[root@tomcat1 tools]# mv jdk1.8.0_60/ /usr/local/java8
[root@tomcat1 tools]# vim /etc/profile.d/java.sh
[root@tomcat1 tools]# source /etc/profile
[root@tomcat1 tools]# java -version

ここに画像の説明を挿入します

3.2tomcatのインストール

[root@tomcat2 tools]# tar xf  apache-tomcat-8.5.38.tar.gz
[root@tomcat2 tools]# mv apache-tomcat-8.5.38 /usr/local/tomcat
[root@tomcat2 tools]# /usr/local/tomcat/bin/startup.sh

ここに画像の説明を挿入します

3.3アプリケーション展開の監視
https://www.wgstart.com/docs13.html//
自分でダウンロードせず、圧縮パッケージを解凍
して、MySQLサーバーにログインしました

[root@mysql-m ~]# mv wgcloud.sql /home/
[root@mysql-m ~]# mysql -uroot -p123123
mysql> use wgcloud;
mysql> set names utf8;
mysql> source /home/wgcloud.sql;   //压缩包里面有

[root@tomcat1 tools]# yum -y install unzip
[root@tomcat1 tools]# unzip wgcloud-master.zip 
[root@tomcat1 tools]# rm -rf /usr/local/tomcat/webapps/ROOT/*
[root@tomcat1 tools]# mv tools/wgcloud/* /usr/local/tomcat/webapps/ROOT/
[root@tomcat1 tools]# cd /usr/local/tomcat/webapps/ROOT
[root@tomcat1 tools]# ls
[root@tomcat1 ROOT]# cd wgcloud-server/
[root@tomcat1 wgcloud-server]# cd resources/
[root@tomcat1 resources]# vim application.yml 


[root@tomcat1 resources]# cd ..
[root@tomcat1 wgcloud-server]# cd ..
[root@tomcat1 ROOT]# cd wgcloud-agent/
[root@tomcat1 wgcloud-agent]# ls
[root@tomcat1 wgcloud-agent]# cd resources/
[root@tomcat1 resources]# ls
application.yml  logback-spring.xml
[root@tomcat1 resources]# vim application.yml 

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210201173225687.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210201173232802.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210201173251381.png)

[root@tomcat1 webapps]# cd ROOT/
[root@tomcat1 ROOT]# ls
[root@tomcat1 agent]# bash start.sh 
[root@tomcat1 server]# bash start.sh 

9999にアクセスできない場合は、次のURLにアクセスしてください:http://192.168.9.12:9999 / wgcloud / login / toLogin
ここに画像の説明を挿入します

4. nginxのデプロイ(2台のマシンの操作は同じです)
4.1nginxのインストール

[root@nginx1~]# yum -y install pcre-devel zlib-devel openssl-devel
[root@nginx ~]# useradd -M -s /sbin/nologin nginx
[root@nginx ~]# tail -1 /etc/passwd;tail -1 /etc/group
[root@nginx ~]# cd tools/
[root@nginx tools]# tar xf nginx-1.6.0.tar.gz -C /usr/src/
[root@nginx tools]# cd /usr/src/nginx-1.6.0/
[root@nginx nginx-1.6.0]# ./configure --prefix=/usr/local/nginx  --user=nginx --group=nginx --with-file-aio  --with-http_mp4_module  --with-http_ssl_module && make && make install
[root@nginx1 ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
[root@nginx1 ~]# nginx -t
[root@nginx1 ~]# ss -atp|grep nginx
[root@nginx1 ~]# curl -I http://192.168.9.8

4.2モニターのインストール

[root@nginx1]# yum -y install unzip
[root@nginx1]# unzip monitor-master.zip 
[root@nginx1 ~]# rm -rf /usr/local/nginx/html/*
[root@nginx1 ~]# mv tools/monitor/* /usr/local/nginx/html/

訪問テスト:
ここに画像の説明を挿入します

4.3 apacheおよびtomcatリバースプロキシを構成します(2つは同じです)

[root@nginx1 ]# vim /usr/local/nginx/conf/nginx.conf
user  nginx;
worker_processes  4;
error_log  logs/error.log  info;
pid        logs/nginx.pid;
events {
	use epoll;
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 access_log  logs/access.log  main;
sendfile        on;
    keepalive_timeout  65;
gzip  on;
upstream apache {
		server 192.168.9.10:80;
		server 192.168.9.11:80;
	}
	upstream tomcat {
		server 192.168.9.12:9999;
		server 192.168.9.13:9999;
	}
    server {
        listen       80;
        server_name  localhost;
        charset koi8-r;
        access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {
            proxy_pass  http://apache;
			proxy_set_header Host $host;
			proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
			proxy_set_header X-real-ip $remote_addr;
       }

        location /data/ {
            proxy_pass  http://apache;
			proxy_set_header Host $host;
			proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
			proxy_set_header X-real-ip $remote_addr;
       }
        location /static/ {
            proxy_pass  http://apache;
			proxy_set_header Host $host;
			proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
			proxy_set_header X-real-ip $remote_addr;
       }
		location ~\/toLogin$ {
	        proxy_pass  http://tomcat;
			proxy_set_header Host $host;
			proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
			proxy_set_header X-real-ip $remote_addr;
		}
		location  ~ .*\.(js|css|jpg|png)$ {
	        proxy_pass  http://tomcat;
			proxy_set_header Host $host;
			proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
			proxy_set_header X-real-ip $remote_addr;
		}
    }
}

[root@nginx1 conf]# nginx -t
[root@nginx1 conf]# nginx -s reload

nginxにインストールされています
ここに画像の説明を挿入します

192.168.9.8/index.phpを検索します192.168.9.9/index.php
ここに画像の説明を挿入します

http://192.168.9.8/wgcloud/login/toLoginを検索します
ここに画像の説明を挿入します

5.キープアライブは2つのnginxの高可用性を実現します

5.1 4つのアプリケーションサーバーを構成します(操作は同じです)

[root@httpd-php1 ~]# vim /opt/lvs-dr
#!/bin/bash 
# lvs-dr 
VIP="192.168.9.66"
/sbin/ifconfig lo:vip $VIP broadcast $VIP netmask 255.255.255.255
/sbin/route add -host $VIP dev lo:vip
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

[root@nginx1 ~]# chmod +x /opt/lvs-dr 
[root@apache-php ~]# /opt/lvs-dr 
[root@apache-php ~]# echo "/opt/lvs-dr" >> /etc/rc.local 
[root@apache-php ~]# ip a

[root@apache-php ~]# route -n

[root@apache-php ~]# scp /opt/lvs-dr  192.168.9.11:/opt/      //12,13,14也是一样
[root@nginx2 ~]# chmod +x /opt/lvs-dr
[root@nginx2 ~]# /opt/lvs-dr
[root@nginx2 ~]# ip a
[root@nginx2 ~]# route -n
[root@nginx2 ~]# echo "/opt/lvs-dr" >> /etc/rc.local

ここに画像の説明を挿入します
ここに画像の説明を挿入します

5.2キープアライブデプロイメント(メイン)

[root@nginx1 ~]# modprobe ip_vs
[root@nginx1 ~]# cat /proc/net/ip_vs
[root@nginx1 ~]# yum -y install keepalived ipvsadm
[root@nginx1 ~]# cd /etc/keepalived/
[root@nginx1 keepalived]# cp keepalived.conf{,.ori}
[root@nginx1 keepalived]# vim keepalived.conf

! Configuration File for keepalived
global_defs {
	[email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_MASTER
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.9.66
    }
}
virtual_server 192.168.9.66 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
    real_server 192.168.9.10 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
			connect_port 80
        }
    }
    real_server 192.168.9.11 80 {
        weight 1
        TCP_CHECK {
            onnect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
			connect_port 80
        }
    }
    real_server 192.168.9.12 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
			connect_port 80
        }
    }
    real_server 192.168.9.13 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
			connect_port 80
        }
    }
}

上記のエラーを修正するために、
keepalivedは2つのnginxの高可用性を実行しているため、互いのマスターとスレーブである必要があり、負荷分散を行う必要はなく、仮想実IPを構成する必要もありません。2番目のnginxホストはルーターを変更して異なるものにすることができ、2つの状態は、最初の状態の反対、1つのスレーブと1つのマスターに変更されます。優先度も逆に変更されます。

! Configuration File for keepalived

global_defs {
     [email protected]
   }
   notification_email_from root@lvsdr hannibal.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_MASTER
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.9.66
    }
}
vrrp_instance VI_1 {
    state SLAVE
    interface ens33
    virtual_router_id 52
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.9.88
    }
}

[root@nginx1 keepalived]# systemctl start keepalived
[root@nginx1 keepalived]# ipvsadm -ln

[root@nginx1 keepalived]# ip a

ここに画像の説明を挿入します

5.2キープアライブデプロイメント(スレーブ)

[root@nginx2 ~]# yum -y install ipvsadm keepalived
[root@nginx2 ~]# cp /etc/keepalived/keepalived.conf{,.ori}
[root@nginx2	~]#	scp	192.168.9.8:/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
[root@nginx2 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
	[email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_SLAVE
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state SLAVE
    interface ens33
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.9.66
    }
}
virtual_server 192.168.9.66 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
    real_server 192.168.9.8 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
			connect_port 80
        }
    }
    real_server 192.168.9.9 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
			connect_port 80
        }
    }
    real_server 192.168.9.12 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
			connect_port 80
        }
    }
    real_server 192.168.9.13 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
			connect_port 80
        }
    }
}

[root@nginx2 ~]# systemctl start keepalived
[root@nginx2 ~]# ip a

5.3スクリプトは、nginxとkeepalivedが一緒に
停止することを認識します。nginxがダウンした後、keepalivedはプロセスを自動的に終了しないことに注意してください。高可用性は無効です。したがって、スクリプトを編集してkeepalovedを設定し、nginxがダウンした後にプロセスを強制終了します。スクリプトの内容は次のとおりです。

#!/bin/bash
while :;do
	pidof nginx &> /dev/null
	if [ $? -ne 0 ];then
		/usr/local/nginx/sbin/nginx &> /dev/null
		pidof nginx $> /dev/null
		if [ $? -ne 0 ];then
			/usr/bin/systemctl stop keepalived
		else
			pidof keepalived &> /dev/null
			if [ $? -ne 0 ];then
				/usr/bin/systemctl start keepalived
			fi
		else
			pidof keepalived &> /dev/null
			if [ $? -ne 0 ];then
				/usr/bin/systemctl start keepalived
			fi
		fi
	fi
	sleep 3
done

ここに画像の説明を挿入します
ここに画像の説明を挿入します

6.負荷分散を実現するためのDNSポーリングnginx

6.1dnsのインストール

[root@nginx1 ~]# yum  -y install bind bind-utils bind-chroot bind-libs
[root@nginx1 named]# rpm -qa | grep bind

ここに画像の説明を挿入します

6.2構成ファイルを変更する
DNSサーバーはDNSを優先して独自のIPアドレスを選択します

vim /etc/resolves

[root@ng1 ~]# vim /etc/named.conf 

[root@dns ~]# named-checkconf /etc/named.conf
[root@ng1 ~]# cd /var/named
[root@ng1 named]# cp -p named.empty yun220.com.zone
[root@ng1 named]# vim yun220.com.zone

ここに画像の説明を挿入します

[root@dns named]# named-checkzone yun220.com yun220.com.zone 

ここに画像の説明を挿入しますここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_39109226/article/details/113524916
おすすめ