- 作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
- 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
- 个人主页:团儿.-CSDN博客
目录
实验目标:七台虚拟机集群利用Nginx负载均衡与Keepalived共筑高可用服务架构
15.主服务器关闭nginx,测试keepalived地址漂移
前言:
在当今这个信息爆炸的时代,互联网企业面临的一个重大挑战是如何确保其服务的稳定性和持续性,特别是在应对大规模访问请求时。 为此,构建一个高可用的服务架构显得尤为重要。
这种架构不仅能够提升系统的整体性能,还能够在发生故障时快速恢复,保证服务的不间断。 高可用性,简言之,指的是系统在遇到故障或异常情况时依然能够继续运行的能力。 构建高可用架构的目标,就是要让系统在面对各种不可预见的故障场景时,仍能保持稳定、可靠并保持高性能运作。
那么,如何实现这样的架构呢?
让我们首先来谈谈容灾与备份策略:
这是保障系统可用性的第一道防线。 通过多活数据中心部署、数据备份以及数据复制等策略,即便发生了灾难性故障,系统也能实现快速恢复。
接着是负载均衡:
这一技术能将流量智能地分散到多个服务器上,有效避免单点故障,同时提升系统的可用性和性能。 而说到弹性伸缩,它允许系统根据当前负载的变化,动态调整服务器的数量和配置,以保持系统的高性能和高可用性。障检测和自动恢复则利用了监控工具和自动化脚本,实时监测系统的健康状况,并在发现异常时迅速采取恢复措施。
最后,安全性和可靠性是构建任何系统的基石。 通过数据加密、访问控制等安全措施,可以确保系统数据的保密性和完整性。
实验目标:七台虚拟机集群利用Nginx负载均衡与Keepalived共筑高可用服务架构
实验拓扑:Lb1 192.168.8.5
Lb2 192.168.8.6
Web1 192.168.8.7
Web2 192.168.8.8
Php 192.168.8.9
Mysql 192.168.8.10
Lb1 192.168.8.5的配置
1.rpm安装nginx
卸载原来镜像,挂载软件镜像
umount /dev/cdrom
mount /dev/cdrom /mnt/
2.进入到mnt下的nginx下,并进行安装
cd /mnt/nginx-rpm/
rpm -ivh * --nodeps --force
3.启动服务
systemctl start nginx
4.删除默认配置文件
5.创建新的配置文件
vim /etc/nginx/conf.d/lb1.conf
添加:
upstream web {
server 192.168.8.7:80;
server 192.168.8.8:80;
}
server {
listen 80;
server_name www.abc.com;
location / {
proxy_pass http://web;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
6.重启服务并查看端口
systemctl restart nginx
netstat -anptl | grep nginx
7.将/etc/nginx下的所有东西拷贝到lb2上
scp -rp /etc/nginx/* [email protected]:/etc/nginx/
8.创建优化项文件,网站配置文件直接调用
添加:
cat >> /etc/nginx/nginx_params << END
proxy_set_header Host \$http_host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
END
网站配置调用
vim /etc/nginx/conf.d/lb1.conf
修改为:
server {
listen 80;
server_name www.abc.com;
location / {
proxy_pass http:web;
include nginx_params;
}
}
}
保存退出
重启nginx:systemctl restart nginx
9.安装keepalived
yum -y install keepalived
10.配置keepalived
主服务器:lb1
vim /etc/keepalived/keepalived.conf
修改为:
> /etc/keepalived/keepalived.conf
cat >> /etc/keepalived/keepalived.conf << END
global_defs {
router_id lb1
}
vrrp_script check_nginx_proxy {
script “/sh/check_nginx_proxy.sh”
interval 2
weight 5
}
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.8.254
}
track_script {
check_nginx_proxy
}
}
END
保存退出
11.启动服务:
systemctl restart keepalived
12.解决nginx故障造成群集无法工作
编辑nginx监控脚本
mkdir /sh
cat >> /sh/check_nginx_proxy.sh << END
#!/bin/bash
killall -0 nginx
if [ \$? -ne 0 ];then
systemctl stop keepalived
fi
END
chmod +x /sh/check_nginx_proxy.sh
13.添加脚本追踪模块到keepalived配置文件
vim /etc/keepalived/keepalived.conf
保存退出
重启服务:systemctl restart keepalived
关闭nginx
14.主服务器添加计划任务
crontab -e
* * * * * /bin/bash /sh/check_nginx_proxy.sh
15.主服务器关闭nginx,测试keepalived地址漂移
Lb2 192.168.8.6的配置
1.rpm安装nginx
卸载原来镜像,挂载软件镜像
umount /dev/cdrom
mount /dev/cdrom /mnt/
2.进入到mnt下的nginx下,并进行安装
cd /mnt/nginx-rpm/
rpm -ivh * --nodeps --force
3.启动服务
systemctl start nginx
4.删除默认配置文件
5.拷贝好后重启服务
6.创建优化项文件,网站配置文件直接调用(选做,但推荐)
vim /etc/nginx/nginx_params
添加:
cat >> /etc/nginx/nginx_params << END
proxy_set_header Host \$http_host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
END
保存退出
网站配置调用
vim /etc/nginx/conf.d/lb.conf
修改为:
server {
listen 80;
server_name www.abc.com;
location / {
proxy_pass http://web;
include nginx_params;
}
}
}
保存退出
重启nginx:systemctl restart nginx
7.安装keepalived
yum -y install keepalived
备服务器:lb2
vim /etc/keepalived/keepalived.conf
修改为:
>/etc/keepalived/keepalived.conf
cat >> /etc/keepalived/keepalived.conf << END
global_defs {
router_id lb2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.254
}
}
END
保存退出
启动服务:systemctl restart keepalived
Web1 192.168.8.7的配置
1.pm安装nginx
卸载原来镜像,挂载软件镜像
umount /dev/cdrom
mount /dev/cdrom /mnt/
2.进入到mnt下的nginx下,并进行安装
cd /mnt/nginx-rpm/
rpm -ivh * --nodeps --force
3.启动服务
systemctl start nginx
4.删除默认配置文件
rm -rf /etc/nginx/conf.d/default
5.拷贝好后重启服务
6.重启服务,并将网页根目录拷贝到php8.9上
systemctl restart nginx
scp -rp /wordpress [email protected]:/
7.将网页根目录拷贝到nfs8.11上
scp -rp /wordpress/* [email protected]:/data
8.查看并挂载
mount | grep data
showmount-e 192.168.8.11
mount -t nfs 192.168.8.10:/data /wordpress/
echo "192.168.8.10:/data /wordpress nfs defaults 00" >>/etc/fstab
Php 192.168.8.9的配置
1.192.168.8.9安装php
2.进入/mnt/php-rpm/安装相关的包
cd /mnt/php-rpm/
rpm -ivh * --nodeps --force
3.启动php服务,设置服务自启,并查看端口
4.修改php服务器的配置文件
vim /etc/php-fpm.d/www.conf
5.重启php服务
systemctl start php-fpm
Mysql 192.168.8.10的配置
1.192.168.8.9安装mysql
2.启动服务
3.创建数据库和用户
mysql
create database blog;
grant all on blog.* to blog@'%' identified by '123';
flush privileges;
客户端进行访问
Web2 192.168.8.8的配置
1.rpm 安装nginx
卸载原来镜像,挂载软件镜像
umount /dev/cdrom
mount /dev/cdrom /mnt/
2.进入到mnt下的nginx下,并进行安装
cd /mnt/nginx-rpm/
rpm -ivh * --nodeps --force
3.安装完成后启动服务
systemctl start nginx
4.删除默认配置文件
5.复制wordpress安装包,到虚拟机/,解压并赋权
6.创建虚拟主机配置文件
cd /etc/nginx/conf.d
vim web.conf
7.将网页根目录及nginx拷贝到web1上
scp -rp /wordpress [email protected]:/
scp -rp /etc/nginx/* [email protected]:/etc/nginx