目录
一、Nginx+keepalived+nfs群集配置
1.1 项目环境
1.2 nfs配置
[root@nfs ~]# systemctl stop firewalld #关闭防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# yum -y install rpcbind nfs-utils
[root@nfs ~]# mkdir /web1
[root@nfs ~]# mkdir /web2
[root@nfs ~]# echo "<h1> this is Nginx1. </h1>" > /web1/index.html
[root@nfs ~]# echo "<h1> this is Nginx2. </h1>" > /web2/index.html
[root@server5 ~]# vi /etc/exports #添加
/web1 20.0.0.13/24(ro)
/web2 20.0.0.14/24(ro)
[root@server5 ~]# systemctl restart nfs
[root@server5 ~]# systemctl restart rpcbind
[root@server5 ~]# showmount -e
Export list for nfs:
/web2 20.0.0.14/24
/web1 20.0.0.13/24
1.3 节点配置
1.31 Nginx 节点 1 配置
[root@nginx1 ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel
[root@nginx1 ~]# tar zxvf nginx-1.12.2.tar.gz
[root@nginx1 ~]# useradd -M -s /sbin/nologin nginx #创建不带宿主,不可登录nginx用户
[root@nginx1 ~]# cd nginx-1.12.2
[root@nginx1 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@nginx1 nginx-1.12.2]# make && make install #编译安装nginx
[root@nginx1 nginx-1.12.2]# cd
[root@nginx1 ~]# mount 20.0.0.15:/web1 /usr/local/nginx/html
[root@nginx1 ~]# df -Th
[root@nginx1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin #命令链接,方便使用
[root@nginx1 ~]# nginx #开启
[root@nginx1 ~]# netstat -anpt | grep nginx #查看端口是否开启
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 57499/nginx: master
[root@nginx1 ~]# curl http://localhost
<h1> this is Nginx1. </h1>
1.32 Nginx 节点 2 配置
安装同Nginx 1 一样
[root@nginx2 nginx-1.12.2]# cd
[root@nginx2 ~]# mount 20.0.0.15:/web2 /usr/local/nginx/html
[root@nginx2 ~]# df -Th
[root@nginx2 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin #命令链接,方便使用
[root@nginx2 ~]# nginx #开启
[root@nginx2 ~]# netstat -anpt | grep nginx #查看端口是否开启
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 57499/nginx: master
[root@nginx2 ~]# curl http://localhost
<h1> this is Nginx2. </h1>
1.4 调度器配置
在nginx1,nginx2上
添加nginx,keepalived安装包
nginx-1.13.7.tar
keepalived-2.0.13.tar.gz
1.41 Nginx 1 配置
[root@nginx1 ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel #pcre-devel:正则表达式库;zlib-devel:函数库
[root@nginx1 ~]# useradd -M -s /sbin/nologin nginx #创建不带宿主,不可登录的用户nginx
[root@nginx1 ~]# tar zxvf nginx-1.13.7.tar.gz #解压缩
[root@nginx1 ~]# cd nginx-1.13.7/ #进入主目录
[root@nginx1 nginx-1.13.7]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx #安装路径,属主,属组设置
[root@nginx1 nginx-1.13.7]# make && make install #编译安装
[root@nginx1 nginx-1.13.7]# ln -s /usr/local/nginx/conf/nginx.conf /etc/ #创建设置链接
[root@nginx1 nginx-1.13.7]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/ #创建命令链接,方便使用命令
[root@nginx1 nginx-1.13.7]# cd
[root@nginx1 ~]# vi /usr/local/nginx/conf/nginx.conf
#server上面添加upstream服务池:location内添加静态调用
upstream tomcat_server { #服务地址池名
server 20.0.0.13:8080 weight=1;
server 20.0.0.14:8080 weight=1;
#节点 ip地址 端口号 权重
}
#root html;
#index index.html index.htm;
proxy_pass http://nginx_server;
[root@nginx1 ~]# nginx -t 检查语法
[root@nginx1 ~]# nginx 服务启动
[root@nginx1 ~]# netstat -anpt | grep 80 查看端口状态
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 58542/nginx: master
[root@nginx1 ~]# curl http://localhost
<h1> this is Nginx2. </h1>
[root@nginx1 ~]# curl http://localhost
<h1> this is Nginx1. </h1>
1.42 Nginx 2 配置
Nginx 2 配置同上
1.43 主keepalived 配置
[root@nginx1 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel #安装依赖包
[root@nginx1 ~]# tar zxvf keepalived-2.0.13.tar.gz #解压缩
[root@nginx1 ~]# cd keepalived-2.0.13/
[root@nginx1 keepalived-2.0.13]# ./configure --prefix=/ 路径设置
[root@nginx1 keepalived-2.0.13]# make && make install 编译安装
[root@nginx1 keepalived-2.0.13]# cp keepalived/etc/init.d/keepalived /etc/init.d
[root@nginx1 keepalived-2.0.13]# vi /etc/init.d/keepalived
修改:
#chkconfig: 35 21 79 运行级别
[root@nginx1 keepalived-2.0.13]# chmod 755 /etc/init.d
[root@nginx1 keepalived-2.0.13]# chkconfig --add keepalived
[root@nginx1 keepalived-2.0.13]# chkconfig --list
[root@nginx1 keepalived-2.0.13]# vi /etc/keepalived/keepalived.conf
删除所有,除了第一行
添加:
global_defs {
router_id nginx1 #本服务器的名称
}
vrrp_script chk_http_port { #vrrp脚本
script "/usr/local/src/nginx.sh" #脚本路径 最后手动执行此脚本,以确保脚本能够正常运行
interval 2 #检测间隔时间 单位秒
weight 2
}
vrrp_instance vi_1 { #实例名称
state MASTER #指定keepalived的角色,MASTER为主,BACKUP为备
interface ens33 #当前进行vrrp通讯的网络接口卡
virtual_router_id 51 #虚拟路由编号,主从要一致
priority 110 #优先级,数值越大,获取地址优先级越大
adver_int 1 #检查间隔,默认为1s (vrrp组播周期秒数)
authentication { #认证方式
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #调用检测脚本
}
virtual_ipaddress {
20.0.0.100 #定义虚拟ip(VIP)
}
}
在调度器2上完成keepalived的编译安装后从调度器1进行拷贝
调度器1上
[root@nginx1 keepalived-2.0.13]# scp /etc/keepalived/keepalived.conf root@20.0.0.12:/etc/keepalived/ #拷贝文件
1.44 从keepalived 配置
已完成keepalived的编译安装后编译从调度器1拷贝来的文件
[root@nginx2 keepalived-2.0.13]# vi /etc/keepalived/keepalived.conf
修改:
router_id nginx2 服务器名称
state BACKUP 指定keepalived的角色,MASTER为主,BACKUP为备
priority 105 优先级
调度器1:
在调度器1上配置脚本文件,并拷贝给调度器2
[root@nginx1 keepalived-2.0.13]# vi /usr/local/src/nginx.sh
#!/bin/bash
A=`ps -C nginx --no-header | wc -l` 查询进程数
if [ $A -eq 0 ]
then /usr/local/nginx/sbin/nginx
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]
then exit 1
else exit 0
fi
else
exit 0
fi
[root@nginx1 keepalived-2.0.13]# scp /usr/local/src/nginx.sh root@20.0.0.12:/usr/local/src
[root@nginx1 keepalived-2.0.13]# chmod +x /usr/local/src/nginx.sh
[root@nginx1 keepalived-2.0.13]# systemctl start keepalived.service
[root@nginx1 keepalived-2.0.13]# systemctl status keepalived.service 服务状态
[root@nginx1 ~]# tail -100 /var/log/messages 查看日志
[root@nginx1 ~]# ip addr 查看虚拟地址
调度器2上
[root@nginx2 keepalived-2.0.13]# chmod +x /usr/local/src/nginx.sh
[root@nginx2 keepalived-2.0.13]# systemctl start keepalived.service
[root@nginx2 keepalived-2.0.13]# systemctl status keepalived.service 服务状态
[root@nginx2 ~]# tail -100 /var/log/messages 查看日志
[root@nginx2 ~]# ip addr 查看虚拟地址
调度器1上:
[root@nginx1 ~]# systemctl stop keepalived.service #停止服务
[root@nginx1 ~]# ip addr #虚拟地址消失
调度器2上:
[root@nginx2 ~]# ip addr #漂移地址过来
1.5 浏览器访问
http://20.0.0.100