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