[DNS轮询]---[Nginx+keepalived高可用]---[应用层{apache(mycloud),tomcat(monitor)}]---[存储层(mysql)+主从复制]---NFS共享

目录
一. 项目说明 1
1.1 逻辑拓扑图 1
1.2 项目说明 1
二. 项目部署 2

  1. 数据库部署 2
    1.1 部署环境 2
    1.2 安装数据库 2
    1.3 主从复制 3
    1.4 Atlas负载均衡实现 4
  2. apache+php部署 7
    2.1 安装httpd (两台机子操作相同) 7
    2.2 安装php 8
    2.3 配置apache解析php 8
    2.4 部署Discuz论坛 9
  3. tomcat部署 (两台机子操作相同) 10
    3.1 jdk环境安装 10
    3.2 tomcat安装 10
    3.3 监控应用部署 10
  4. nginx部署 (两台机子操作相同) 12
    4.1 安装nginx 12
    4.2 安装monitor 13
    4.3 配置apache,tomcat反向代理 (两台相同) 13
  5. keepalived实现两台nginx高可用 16
    5.1 配置四台应用服务器(操作相同) 16
    5.2 keepalived 部署(主) 17
    5.2 keepalived 部署(从) 19
  6. DNS轮询nginx实现负载均衡 21

一.项目说明
1.1逻辑拓扑图

在这里插入图片描述

DNS修改两台nginx都匹配一个url,实现轮询nginx达到负载均衡。
nginx 配置文件设置upstream实现负载均衡,设置location匹配实现动静分离,两台nginx使用keepalived实现高可用,并且安装monitor服务。
后端存储端做MySQL数据库,做好主从复制,并且起一台服务器做读写分离(mycat,atlas…)。
两台apache机子安装Discuz论坛服务,并且绑定后端服务器。
两台tomcat机子安装wgcloud监控服务,并且绑定后端服务器。
起一台服务器做NFS,创建四个挂在目录,挂载应用层服务。

1.2项目说明
1 192.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部署环境
主MySQL 192.168.9.14 msql-m
从MySQL 192.168.9.15 mysql-s
1.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;

在这里插入图片描述

扫描二维码关注公众号,回复: 12691356 查看本文章

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 (两台机子操作相同)
在这里插入图片描述

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.2安装php

[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.3配置apache解析php

[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.4部署Discuz论坛

[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部署 (两台机子操作相同)
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部署 (两台机子操作相同)
4.1安装nginx

[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安装monitor

[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反向代理 (两台相同)

[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.keepalived实现两台nginx高可用

5.1配置四台应用服务器(操作相同)

[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 keepalived 部署(主)

[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做的是两台nginx的高可用,所以只需要做互为主从,不需要做负载均衡,不需要配置虚拟真实IP。第二台nginx主机修改routerid不同就行,两个state改成和第一个相反,一从一主。优先级也改成相反的。

! 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.2keepalived 部署(从)

[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不会自动结束进程,高可用是无效的,所以编辑脚本设置nginx宕机后keepaloved也杀掉进程。脚本内容如下:

#!/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