代码改变世界

第五节 Nginx集群

2019-04-09 22:01  战泪殇  阅读(402)  评论(0编辑  收藏  举报

 

 

 

 

 

 

 

给140和143安装Nginx

#web02
[root@web02 ~]# sh nginx_install
[root@web02 ~]# echo web02 > /usr/local/nginx/html/index.html
[root@web02 ~]# yum -y install elinks &>/dev/null
[root@web02 ~]# /usr/local/nginx/sbin/nginx
[root@web02 ~]# elinks http://localhost -dump
web02

 

配置140的config

删除不需要的配置信息

sed -i '/#/d' nginx.conf
sed -i '/^$/d' nginx.conf

删掉location下的数据

配置upstream

检查

轮流分发

 

 

Nginx分发算法

 

 

 

 

 

基于轮训分发

修改config文件

保存 重启Nginx

 

ip_hash

修改config文件

保存 重启Nginx

 

 使用41访问

 

 服务器状态

修改config状态为backup

 

因为是backup 和 ip_hash 无法同时使用(Ip_hash balancer does not support backup servers and weight)

 删除掉ip_hash后

 

 142down的时候

 

 

基于请求头(host)的分发

修改config 

保存 重启Nginx

用143修改hosts文件

143访问

 

 基于开发语言分发

killall 142的Nginx

安装Apache php

 yun -y install httpd php

修改140的config

保存 重启 Nginx

142启动Apache

systemctl start httpd

 

写php页面

echo "<?php phpinfo(); ?>" > /var/www/html/index.php

浏览器访问 http://192.168.0.142/index.php

 

 浏览器访问http://192.168.0.140/index.html

浏览器访问http://192.168.0.140/index.php (此处的IP是140 不是142)

 

基于浏览器分发

修改142做个虚拟主机

停止Apache

建立虚拟主机

修改config文件

 

 创建web3文件夹

 

 访问

修改140的config

 

保存重启Nginx

140访问

 

 

 142访问

143访问

谷歌访问

其他浏览器访问

 

 源于IP分发

修改config

保存重启

141访问

 

 142访问

其他ip访问

 

 

 

高可用集群

 

 

 

 

 

 

修改140 config

 

 

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

upstream web {
server 192.168.0.142;
server 192.168.0.143;
}
server {
listen 80;
server_name www.web1.com;
location / {
proxy_pass http://web;
}
}
}

测试分发

拷贝config文件到141

scp nginx.conf 192.168.0.141:/usr/local/nginx/conf/

 

 测试

配置keepalived.con

进入

修改

!Configuration File for keepalived
global_defs {
router_id NGINX_DEVEL
}
vrrp_script check_nginx {
script "/etc/keepalived/nginx_pid.sh"
interval 2
fall 1
}
}
vrrp_instance nginx {
state MASTER
interface ens33
mcast_src_ip 192.168.0.140
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.0.213/24
}
}

 

 配置nginx_pid.sh

/etc/keepalived/nginx_pid.sh

 

#!/bin/bash
nginx_kp_check () {
nginxpid=`ps -C nginx --no-header |wc -l`
if [ $nginxpid -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 1
nginxpid=`ps -C nginx --no-header |wc -l`
if [ $nginxpid -eq 0 ];then
systemctl stop keepalived
fi
fi
}

 

 检查 是否有213的ip

 启动

systemctl restart keepalived

 

检查213ip

访问213

 

tcpdump -nn -vvv -i ens33 vrrp

检测网络包

拷贝140的config文件到141上

修改141的config文件

 

 拷贝nginx_pid.sh

启动141的keepalived

检查141的ip 没有213IP 因为是备份的

 

模拟主机挂掉

打开141 的message

 

 停止140主机的Nginx

 

检查140的是否 自动启动 

没有自动启动因为脚本有问题

原因脚本没有给权限 

增加权限140 141

重新启动keepalived141

 

killall后 检查

自动重启

检查systemctl status keepalived.service 出现

Error exec-ing command '/etc/keepalived/nginx_pid.sh', error 2: No such file or directory

 

解决方法 https://blog.csdn.net/yuyedewutong/article/details/82530757

 

测试