### 架构图![image-20220927101530946](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202209271015044.png)



|        主机名        |     主机IP     |
| :------------------: | :------------: |
|      nginx1(主)      | 192.168.110.11 |
|     nginx2(备）      | 192.168.110.12 |
|      nginx web1      | 192.168.110.13 |
|      nginx web2      | 192.168.110.14 |
|       tomcat1        | 192.168.110.15 |
|       tomcat2        | 192.168.110.16 |
|     mysql1(主从)     | 192.168.110.17 |
|    mysql2（主从）    | 192.168.110.18 |
| nfs（reync+sersync） | 192.168.110.19 |

### 网卡配置

```
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens33 
service network restart
动态
dhcp
静态
static
```

### 配置yum源脚本

```
#!/bin/bash
#本地源
mount /dev/cdrom /mnt/
ls /mnt/
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*
ll /etc/yum.repos.d/bak/
echo "[local]
name=local
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7" > /etc/yum.repos.d/local.repo
yum clean all
yum list
yum repolist

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
ll /etc/yum.repos.d/
yum clean all
yum list

```

### 数据库5.7安装（17-18）

```
#首先清除环境
yum remove mariadb-libs -y
yum install wget -y

#下载安装包
wget https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz

#创建用户和用户组
useradd mysql -s /sbin/nologin

#数据存储目录
mkdir -p /data/mysqldata

#创建日志目录
mkdir -p /var/log/mysql

#设置权限
chown mysql:mysql -R /data/mysqldata
chown mysql:mysql -R /var/log/mysql

#增加环境变量
echo "export PATH=/usr/local/mysql/bin:$PATH" >>/etc/profile

source /etc/profile

echo "正在解压"
#解压包

cd /usr/local/
tar -xf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

#解压完目录放到软件目录位置
mv mysql-5.7.30-linux-glibc2.12-x86_64   mysql

#设置目录权限
chown mysql:mysql -R /usr/local/mysql
yum install -y libaio

#初始化数据库
mysqld --initialize-insecure  --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata

#配置文件
echo "
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysqldata
#server_id=6
log-error=/var/log/mysql/error.log
slow_query_log = on
long_query_time = 2
slow-query-log-file = /var/log/mysql/slow.log
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
prompt=淋[\\d]> " >/etc/my.cnf
#启动
cp /usr/local/mysql/support-files/mysql.server   /etc/init.d/mysqld 
chmod a+x   /etc/init.d/mysqld
/etc/init.d/mysqld start

#查看端口
netstat -lnp|grep 330
chkconfig --add mysqld

#修改密码
mysqladmin -uroot -p password 

 update mysql.user set host='%' where user='root';
```

## 数据库多实例安装

#### 1.关闭原有数据库，

systemctl  stop mysqld

#### 2.备份原有的my.cnf文件

cp /etc/my.cnf /etc/my.cnf.bak

#### 3.创建各个数据库实例所需目录。

mkdir -p /data/3307/data

#### 4.准备各个实例的配置文件：

```
cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
pid-file=/data/3307/mysql.pid
port=3307
server_id=17
log_bin=/data/3307/mysql-bin
EOF
```

#### 5.进行数据库初始化

/usr/local/mysql/bin/mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data --basedir=/usr/local/mysql

#### 6.授权刚才创建的目录。（更改目录用户以及用户组）

chown -R mysql.mysql /data/*

#### 7.创建systemd启动脚本(模板文件)：（基于centos7的方法）

```
vim /usr/lib/systemd/system/mysqld3307.service 

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld  --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
```

#### 8.启动服务：

需要重新载入systemd的脚本配置：
systemctl daemon-reload

#### 9.启动各个实例：

systemctl start mysqld3307.service

#### 10.验证：

```
netstat -lnp|grep 330*
mysql -S /data/3307/mysql.sock -e "select @@server_id"
```

#### 11.启动多实例数据库

mysql -uroot -p -S /data/3307/mysql.sock

没有密码直接回车



## 17，18互为主从

#### 在主库上开启binlog日志

```
[root@mysql01 ~]# vim /etc/my.cnf
log_bin=/data/binlog/mysql-bin
sync_binlog=1
binlog_format=row
expire_logs_days=15
max_binlog_size=100M

[root@mysql01 ~]# mkdir /data/binlog/
[root@mysql01 ~]# chown -R mysql.mysql /data/binlog/
```

重启生效

```shell
[root@mysql01 ~]# systemctl restart mysqld
```

#### 配置主从复制用户并授权

主库操作

```
mysql> grant replication slave on *.* to repl_user@"%" identified by "123456";
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
```

#### 查看主库当前状态

```
mysql> show master status;
```

#### 配置从库

<font color='red'>修改从库server_id不能与主库相同</font>

<font color='red'>重新生成auto.cnf文件</font>

```shell
[root@mysql02 ~]# cp /data/mysqldata/auto.cnf /opt/auto.cnf.bak
[root@mysql02 ~]# rm -rf /data/mysqldata/auto.cnf
```

```shell
[root@mysql02 ~]# vim /etc/my.cnf
server_id=2   #改成了2
port=3306
socket=/data/mysql/mysql.sock
relay-log=/data/relay-log/relay-log
relay-log-index=/data/relay-log/relay-log.index

[root@mysql02 ~]# mkdir -p /data/relay-log
[root@mysql02 ~]# chown -R mysql:mysql /data/relay-log 
```

重启生效

```shell
[root@mysql02 ~]# systemctl restart mysqld
```

#### 建立主从连接

从机上
即使重启从机的mysql服务后，而不会影响主从

```
mysql> 
CHANGE MASTER TO
MASTER_HOST='192.168.110.17', 
MASTER_USER='repl_user',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002', 
MASTER_LOG_POS=594,
Master_Port=3306,
MASTER_CONNECT_RETRY=10; 
```

```
mysql> 
CHANGE MASTER TO
MASTER_HOST='192.168.110.17', 
MASTER_USER='repl_user',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002', 
MASTER_LOG_POS=594,
Master_Port=3307,
MASTER_CONNECT_RETRY=10; 
```

#### 开启主从复制并查看状态

```
#在从机上操作
mysql>start slave;          

mysql>show slave status\G
```

 ![](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202209271934670.png)

![image-20221004003325430](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202210040033486.png)

![image-20221004003341936](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202210040033981.png)

#### 验证主从复制

#####  主库上

```
mysql> create database class charset utf8;
Query OK, 1 row affected (0.00 sec)

mysql> use class
Database changed
mysql> 
create table teacher (
id int,
name varchar(12),
age char(6));
Query OK, 0 rows affected (0.11 sec)

mysql> insert into teacher values(1,'zhangs',16);
Query OK, 1 row affected (0.15 sec)
```

##### 从库上

```
show databases;
use class
select * from class.teacher;
```

#### 如果发生了报错（5.7数据库）

```
在从库作stop slave时报：
error:
ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

删除5张表，并重新导入脚本

use mysql
drop table slave_master_info;
drop table slave_relay_log_info;
drop table slave_worker_info;
drop table innodb_index_stats;
drop table innodb_table_stats;

(2)重新启动数据库
systemctl restart mysqld
```

# nginx(主备搭建)（11-12）

```
编译安装
[root@nginx1 ~]# useradd -r nginx -s /bin/false 

[root@nginx1 ~]# cd /opt

[root@nginx1 opt]# wget http://nginx.org/download/nginx-1.20.1.tar.gz

[root@nginx1 opt]# tar -zxvf nginx-1.20.1.tar.gz   &&  cd nginx-1.20.1

[root@nginx1 nginx-1.20.1]# yum install -y gcc gcc-c++ automake openssl openssl-devel make pcre-devel gd-devel  glibc-devel
在centos7.6里面是没有该安装包，需要配置网络源进行安装

[root@nginx1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --user=nginx  --group=nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/nginx.log --http-log-path=/var/log/nginx/access.log --modules-path=/usr/local/nginx/modules --with-select_module --with-poll_module --with-threads  --with-http_ssl_module --with-http_v2_module  --with-http_realip_module --with-http_image_filter_module --with-http_sub_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module  --with-http_stub_status_module --with-stream

[root@nginx1 nginx-1.20.1]# make && make install
启动nginx

[root@nginx1 nginx]# ln -s /usr/local/nginx/nginx /usr/sbin/nginx

[root@nginx1 nginx]# nginx 
nginx: [emerg] getpwnam("nginx") failed				#

[root@nginx1 nginx-1.20.1]# nginx   

检验nginx是否正常运行
[root@nginx1 nginx-1.20.1]# ps -ef |grep nginx

nginx 常用命令：

启动：直接运行nginx主程序

重启：nginx -s reload

关闭：nginx -s stop

检查配置文件是否有错：nginx -t 

显示版本：nginx -v

查看nginx版本与编译情况： nginx -V

```

```
报错解决
[root@nginx2 ~]# nginx -s reload
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

/usr/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
```



# nginx web(1-2)博客论坛搭建

#### 编译安装php

安装epel源。

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

```
#安装依赖
yum install autoconf gcc libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libXpm-devel freetype-devel libmcrypt-devel make ImageMagick-devel libssh2-devel gcc-c++ cyrus-sasl-devel  sqlite-devel  oniguruma oniguruma-devel -y 
#下载php安装包
wget https://www.php.net/distributions/php-7.4.28.tar.gz
```

```
编译安装php源码包：

./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--disable-ipv6 \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-ftp \
--enable-gd-jis-conv \
--enable-gd-native-ttf \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-mysqlnd \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-static \
--enable-sysvsem \
--enable-wddx \
--enable-xml \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-freetype-dir \
--with-xpm-dir \
--with-png-dir \
--with-gettext \
--with-iconv \
--with-libxml-dir \
--with-mcrypt \
--with-mhash \
--with-mysqli \
--with-pdo-mysql \
--with-pear \
--with-openssl \
--with-xmlrpc \
--with-zlib \
--disable-debug \
--disable-phpdbg 
#输出Thank you for using php 没有报错即为正常；

make && make install
```

```
#配置php所需要配置文件
cp /opt/php-7.4.28/sapi/fpm/init.d.php-fpm  /usr/local/php/php-fpm              #php主程序
chmod a+x /usr/local/php/php-fpm
cp /opt/php-7.4.28/php.ini-development  /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default   /usr/local/php/etc/php-fpm.d/www.conf   
```

```
添加用户
useradd www -s /sbin/nologin

启动php服务：
/usr/local/php/php-fpm start
出现done字样，表示php启动成功。
```

#### 验证php是否成功

```
修改nginx主配置
vim /usr/local/nginx/conf/nginx.conf

[root@sjk1 conf]# cat nginx.conf
  user  nginx;
  worker_processes  auto;
  worker_rlimit_nofile   65535;
  error_log  /var/log/nginx/nginx.log info;
  pid        logs/nginx.pid;
events{  
    use epoll;  
    multi_accept on;
    worker_connections  65535;
       }
http{                         
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include     vhost/*.conf;
    }

```

```
1.创建虚拟主机配置文件存放目录
[root@nginx1 ~]# cd /usr/local/nginx/conf
[root@nginx1 conf]# mkdir vhost

2.拆分主配置文件
[root@nginx1 conf]# cat >vhost/web.conf <<eof
server {
        listen       8001;
        server_name  192.168.110.149;
        location / {
            root   /www/web;
            index  index.html index.htm index.php;
        }
    }

eof

[root@nginx1 conf]# cat >vhost/blog.conf <<eof
server {
        listen       8002;
        server_name  192.168.110.149;
        location / {
            root   /www/blog;
            index  index.html index.htm index.php;
        }
    }

eof

1.创建基础站点目录
[root@nginx1 conf]# mkdir -p /www/web /www/blog
[root@nginx1 conf]# tree /www
/www
├── blog
└── web

2 directories, 0 files
[root@nginx1 conf]# chown -R nginx:nginx /www
[root@nginx1 conf]# ll /www
总用量 0
drwxr-xr-x 2 nginx nginx 6 3月  21 21:06 blog
drwxr-xr-x 2 nginx nginx 6 3月  21 21:06 web

2.配置默认站点目录首页文件
[root@nginx1 conf]# echo "welcome to web-server" >>/www/web/index.html
[root@nginx1 conf]# echo "welcome to blog-server" >>/www/blog/index.html
[root@nginx1 conf]# cat /www/web/index.html
welcome to web-server
[root@nginx1 conf]# cat /www/blog/index.html
welcome to blog-server
```

```
[root@nginx1 conf]# nginx -t                    #自带语法检查
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

平滑重启nginx服务
[root@nginx1 conf]# nginx -s reload      
```

在网站是打开验证

http://192.168.110.13:8002/

http://192.168.110.13:8001/

![image-20220927213345476](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202209272133536.png)

#### 搭建discuz论坛

```
解压压缩包到将upload下面全部内容复制到/www/php/ 目录下   
给权限
chmod -R 777 /www/php/
```

![image-20220921202851881](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202209272135190.png)

vim /usr/local/nginx/conf/vhost/php.conf

```
[root@sjk1 vhost]# cat php.conf.bak 
server {
        listen 8006;
        server_name 192.168.110.162;
        charset utf-8;
        root /www/php;
        index index.html index.htm index.php;
        location ~* \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi.conf;

                fastcgi_connect_timeout 300;
                fastcgi_send_timeout 300;
                fastcgi_read_timeout 300;
                fastcgi_buffers 4 64k;
                fastcgi_buffer_size 64k;
                fastcgi_busy_buffers_size 128k;
                fastcgi_temp_file_write_size 128k;

       }
    }

```





### 搭建tomcat(15-16)

#### 配置jdk

安装jdkjava运行环境

上传jdk-8u161-linux-x64.rpm软件包到base 

    [root@base ~]#rpm   -ivh    jdk-8u161-linux-x64.rpm
    [root@base ~]#rpm   -qpl    /root/jdk-8u161-linux-x64.rpm       #通过查看jdk的信息可以知道jdk的安装目录在/usr/java        

```
 解压    tar -zxvf /opt/jdk-8u191-linux-x64.tar.gz -C /usr/java
```

```
[root@base ~]#vim   /etc/profile                               #在文件的最后添加以下内容：
export JAVA_HOME=/usr/java/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@base ~]#source   /etc/profile                               #使配置文件生效
```

验证java运行环境是否安装成功：

```
[root@base ~]#java  -version
javaversion"1.8.0_191"
```

# 关闭防火墙安全协议！

```
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
```

# 安装tomcat

```
下载安装包
[root@nginx opt]# wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.78/bin/apache-tomcat-8.5.78.tar.gz

解压即用
[root@nginx opt]# tar -zxvf apache-tomcat-8.5.78.tar.gz
[root@nginx opt]# mv apache-tomcat-8.5.78 /usr/local/tomcat
[root@nginx opt]# cd /usr/local/tomcat/bin
启动tomcat
[root@nginx bin]# ./catalina.sh start

验证是否启动成功
[root@nginx bin]# ps -ef |grep tomcat
或
[root@nginx bin]# netstat -ntpl |grep 8080

启动失败
./catalina.sh:行504: /usr/local/jdk/bin/java: 没有那个文件或目录
添加软连接
ln -s /usr/java/jdk1.8.0_191/jre/bin/java /usr/local/jdk/bin/java

浏览器上访问：http://本机IP:8080
```

![image-20220927201846959](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202209272018036.png)

#### 配置管理界面

创建管理Manger App用户

```
[root@nginx1 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
49<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->
#去掉注释<!--    --> 修改为如下， 
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
 
或者
简单配置：
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui"/>
```

重启tomcat

```
[root@nginx1 conf]# /usr/local/tomcat/bin/catalina.sh stop

[root@nginx1 conf]# /usr/local/tomcat/bin/catalina.sh start
```

在浏览器登录：http://192.168.110.15:8080

![image-20220526154154999](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202209272020697.png)

#### 报错

可能会出现的问题：

![image-20220526154427921](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202209272020492.png)

解决方法如下：

```
[root@nginx1 local]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
 
注释掉这段代码就可以了
<Context antiResourceLocking="false" privileged="true" >
 <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  <Manager sessionAttributeValueClassNameFilter="JAVA\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|JAVA\.util\.(?:Linked)?HashMap"/> -->
</Context>
 
或者改为
 
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
```

<font color='red'>tomcat8以上还要增加以下配置</font>

```
 [root@nginx1 ~]# vim /usr/local/tomcat/conf/Catalina/localhost
/manager.xml
 内容如下：
<Context privileged="true" antiResourceLocking="false"
          docBase="${catalina.home}/webapps/manager">
     <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
 </Context>
```

重启tomcat

# NFS搭建

#### 安装NFS：

```
yum -y install 	nfs-utils rpcbind

#启动rpc服务
systemctl start rpcbind
systemctl enable rpcbind

#启动NFS服务
systemctl start nfs
systemctl  enable nfs

#nfs机(19)
#修改配置文件
vim /etc/exports
/opt/nfstest  			192.168.245.*(rw)

#创建目录
mkdir /opt/nfstest
chmod 777 -R /opt/nfstest/
chown nfsnobody.nfsnobody -R /opt/nfstest/

#重启服务
systemctl restart nfs
showmount -e 192.168.245.130
```

![image-20220928143404854](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202209281434913.png)

#### 连接nfs服务

```
#客户端挂载方法：
mount -t nfs 	nfs服务端IP:/路径/   /本地路径

#挂载NFS服务的共享设备：(13,14,15,16)
mount -t nfs 192.168.110.19:/opt/nfstest/ /opt/

#实现开机自动挂载NFS服务共享设备：
vim /etc/fstab		
192.168.110.19:/opt/nfstest /opt/web1           nfs     defaults        0 0

192.168.110.19:/opt/nfstest /opt/web2           nfs     defaults        0 0

192.168.110.19:/opt/nfstest /opt/web3           nfs     defaults        0 0

192.168.110.19:/opt/nfstest /opt/web4           nfs     defaults        0 0
```

挂载web1和web2服务器

```
web1上执行：
mount -t nfs 192.168.110.19:/opt/web1/ /www/
192.168.110.19:/opt/web1 /www/                                 nfs     defaults        0 0
web2上执行：
mount -t nfs 192.168.110.19:/opt/web2/ /www/
192.168.110.19:/opt/web2 /www/                                 nfs     defaults        0 0
```

![image-20221006005107789](C:\Users\lin\AppData\Roaming\Typora\typora-user-images\image-20221006005107789.png)

```
mount -t nfs 192.168.110.19:/opt/tomcat2/ /usr/local/tomcat/webapps
```

```
[root@nfs web2]# showmount -e 192.168.110.19
Export list for 192.168.110.19:
/opt/web2    192.168.110.*
/opt/web1    192.168.110.*
/opt/tomcat2 192.168.110.*
/opt/tomcat1 192.168.110.*
/opt/nfstest 192.168.110.*
```

# 安装keepalived

源码安装

```
[root@sjk2 opt]# wget --no-check-certificate  https://www.keepalived.org/software/keepalived-2.2.7.tar.gz

如果显示
wget: 无法解析主机地址 “www.keepalived.org”
或
[root@sjk2 opt]# ping www.keepalived.org
ping: www.keepalived.org: 未知的名称或服务
原因是网卡配置IP不是动态是静态
 cd  /etc/sysconfig/network-scripts/
 [root@sjk2 network-scripts]# vim ifcfg-ens33 
 [root@sjk2 network-scripts]# cat ifcfg-ens33 
TYPE=Ethernet
BOOTPROTO=dhcp                   #这里！  dhcp为动态 static为静态 ！一般为静态
DEVICE=ens33
IPADDR=192.168.110.163
ONBOOT=yes
NETMASK=255.255.255.0
重启网卡
service network restart 
 解压安装编译 
[root@sjk2 keepalived-2.2.7]# tar -zxvf keepalived-2.2.7.tar.gz 
[root@sjk2 keepalived-2.2.7]# cd keepalived-2.2.7
[root@sjk2 keepalived-2.2.7]# ./configure --prefix=/usr/local/keepalived
 
 yum -y install openssl-devel
 
make && make install


[root@sjk2 keepalived-2.2.7]#  cp /opt/keepalived-2.2.7/keepalived/etc/init.d/keepalived /etc/init.d/

 # 需要提前在/etc下创建keepalived目录
 mkdir  -p /etc/keepalived
 
 cd /usr/local/keepalived/etc/keepalived
[root@sjk2 keepalived]# ll
总用量 8
-rw-r--r--. 1 root root 3550 9月  23 17:28 keepalived.conf.sample
drwxr-xr-x. 2 root root 4096 9月  23 17:28 samples
[root@sjk2 keepalived]# mv keepalived.conf.sample keepalived.conf

 cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
 
[root@sjk2 keepalived]# cp /opt/keepalived-2.2.7/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

这样就可以执行service keepalived start | stop | reload | restart ]命令。

启动报“Starting keepalived: /bin/bash: keepalived: command not found”错误:

解决方案：

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

```







## mysql配置keepalived

```
! Configuration File for keepalived

global_defs {
   router_id mysql1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    mcast_src_ip 192.168.110.17 3306
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.205
    }

virtual_server 192.168.200.205 3306 {
     delay_loop 2
     lb_algo wrr
     lb_kind DR
     persistence_timeout 60
protocol TCP      real_server 192.168.110.17 3306 {
         weight 3
         notify_down /etc/keepalived/3306.sh
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 3307
         }
     }
}


 track_script {
                check_mysql1
      }
}


vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
    auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.206
    }
 track_script {
                check_mysql2
      }
}


virtual_server 192.168.200.206 3307 {
     delay_loop 2
     lb_algo wrr
     lb_kind DR
     persistence_timeout 60
     protocol TCP
     real_server 192.168.110.17 3307 {
         weight 3
         notify_down /etc/keepalived/3307.sh
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 3307
        }
     }
}
vrrp_script check_mysql1 {
        script "/etc/keepalived/3306.sh"
        interval 5
}

vrrp_script check_mysql2 {
        script "/etc/keepalived/3307.sh"
        interval 5
}
```

## 

