第五节 Nginx集群

 

 

 

 

 

 

 

给140和143安装Nginxphp

#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
web02html

 

配置140的confignginx

删除不须要的配置信息web

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

删掉location下的数据浏览器

配置upstreambash

检查服务器

轮流分发网络

 

 

Nginx分发算法app

 

 

 

 

 

基于轮训分发

修改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

 

测试  

相关文章
相关标签/搜索