首页 > 数据库 > 数据库开发技术 > LNMP环境优化秘籍:负载均衡与高可用性攻略
作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。
公众号:网络豆云计算学堂
座右铭:低头赶路,敬事如仪
在现代大规模在线服务的部署中,LNMP环境因其高效、稳定的特点被广泛采用。然而,为了进一步提升服务质量,引入负载均衡和高可用性设计是必不可少的步骤。本文将为您详细解析如何在LNMP环境下实现这两个目标。
我们来理解什么是负载均衡和高可用性。负载均衡是指通过某种技术手段,将大量并发的请求分散到多台服务器上处理,从而提高系统的吞吐量,减少单台服务器的压力。而高可用性则是保证系统能够在出现故障时仍能正常提供服务的能力。
编辑
lb1: 192.168.8.5
lb2: 192.168.8.6
web1:192.168.8.7
web2:192.168.8.8
php-fpm: 192.168.8.9
mysql: 192.168.8.10
nfs:192.168.8.11
更改主机名并可以解析
hostnamectl set-hostname lb1bashecho "192.168.8.5 lb1" >> /etc/hostshostnamectl set-hostname lb2bashecho "192.168.8.6 lb2" >> /etc/hostshostnamectl set-hostname web1bashecho "192.168.8.7 web1" >> /etc/hostshostnamectl set-hostname web2bashecho "192.168.8.8 web2 " >> /etc/hostshostnamectl set-hostname phpbashecho "192.168.8.9 php " >> /etc/hostshostnamectl set-hostname mysqlbashecho "192.168.8.10 mysql " >> /etc/hostshostnamectl set-hostname nfsbashecho "192.168.8.11 nfs " >> /etc/hosts
编辑
编辑
编辑
编辑
编辑
编辑
分别插入镜像
编辑
8.5-8.8 分别安装nginx,并设置启动
umount /dev/cdrommount /dev/cdrom /mnt/cd /mnt/nginx-rpm/rpm -ivh * --nodeps --forcesystemctl start nginxsystemctl enable nginx
编辑
8.9安装php
umount /dev/cdrommount /dev/cdrom /mnt/cd /mnt/php-rpm/rpm -ivh * --nodeps --forcecd /mnt/nginx-rpm/rpm -ivh openssl* --nodeps --forcesystemctl start php-fpm.servicesystemctl enable php-fpm.service
编辑
8.10 安装mysql
umount /dev/cdrommount /dev/cdrom /mnt/cd /mnt/mysql5.6-rpm/rpm -ivh * --nodeps --forcesystemctl start mysqldsystemctl enable mysqld
编辑
先配置一台web服务器然后同步
设置网站根目录
cp -rp wordpress-4.9.4-zh_CN.zip /cd /unzip wordpress-4.9.4-zh_CN.zipchmod -R 777 /wordpress
编辑
编辑
配置NGINX文件
cd /etc/nginx/conf.d/rm -rf default.conftouch demo.confcat >> demo.conf << EOFserver {listen 80;server_name blog.benet.com;root /wordpress;index index.php index.html;location ~ \.php$ {root /wordpress;fastcgi_pass 192.168.8.8:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}EOFnginx -tsystemctl restart nginx
编辑
编辑
编辑
修改php配置文件
vim /etc/php-fpm.d/listen = 192.168.8.8:9000listen.allowed_clients = 192.168.8.6systemctl restart php-fpm.service
编辑
编辑
编辑
编辑
拷贝网页根目录到php服务器
scp -rp /wordpress root@192.168.8.9:/
编辑
MySQL创建库表
create database blog;grant all on blog.* to blog@'%' identified by '123';
编辑
编辑
客户端访问8.8
编辑
编辑
编辑
编辑
编辑
8.11配置NFS
(1)开启一台centos7,安装nfs-utils、rpcbind:yum -y install nfs-utils rpcbind负责文件共享rpcbind 负责网络通信(2)创建挂载点mkdir -p /nfs/blog(3)发布共享目录vim /etc/exports添加:192.168.8.0/24(rw,sync,no_root_squash)保存退出(4)重启nfs服务systemctl restart rpcbindsystemctl restart nfs(5)在nginx服务器上查看nfs共享目录showmount -e 192.168.8.132(6)把wordpress的内容目录挂载到nfscd /wordpresscp -rp wp-content/ wp-contentbakmount -t nfs 192.168.8.11:/nfs/blog wp-contentcp -rp wp-contentbak/* wp-content/(7)设置永久挂载vim /etc/fstab添加::/nfs/blog /wordpress/wp-content nfs defaults,_netdev 0 0保存退出
编辑
创建挂载点
编辑
发布共享目录
编辑
编辑
重启nfs服务
编辑
在nginx服务器上查看nfs共享目录
编辑
把wordpress的内容目录挂载到nfs
编辑
设置永久挂载
编辑
编辑
同步web2的配置文件
scp -rp /etc/nginx/* root@192.168.8.7:/etc/nginxcd /etc/nginx/conf.d/rm -rf default.conf
编辑
拷贝到8.7
编辑
拷贝网页根目录
scp -rp /wordpress root@192.168.8.7:/
编辑
重启一下服务
编辑
8.7也可以访问了
编辑
配置LB1服务器
修改lb1的配置文件,添加负载均衡功能
cd /etc/nginx/conf.d/vim lb.confupstream web {server 192.168.8.7:80;server 192.168.8.8:80;}server {listen 80;server_namelocation / {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;}}systemctl restart nginx
编辑
保存重启
测试访问代理服务器8.5
编辑
将lb1功能复制到LB2
scp -rp /etc/nginx/* root@192.168.8.6:/etc/nginx/
编辑
重启LB2,访问测试
编辑
配置高可用
编辑
Lb1和LB2安装keepalived
进入lb1配置keepalivedrm -rf /var/run/yum.pidyum -y install keepalived
编辑
清空原有keep文件
编辑
配置LB1为master
/etc/keepalived/keepalived.confvim /etc/keepalived/keepalived.confglobal_defs {router_id lb1}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.8.254}}
编辑
systemctl restart keepalived
编辑
配置LB2
进入lb2配置keepalivedrm -rf /var/run/yum.pidyum -y install keepalived
编辑
编辑
/etc/keepalived/keepalived.confvim /etc/keepalived/keepalived.confglobal_defs {router_id lb2}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {}}systemctl restart keepalived
查看飘逸地址
检查命令(查看漂移地址)ip a show dev ens33
编辑
编辑
访问8.254
编辑
测试keep关闭LB1
编辑
查看LB2
编辑
LB2成为主的活跃的
进阶:
进入lb1服务器 解决nginx故障造成群集无法工作
编辑nginx监控脚本
vim /sh/check_nginx_proxy.sh#!/bin/bashkillall -0 nginxif [ $? -ne 0 ];thensystemctl stop keepalivedfichmod +x /sh/check_nginx_proxy.sh
/etc/keepalived/keepalived.conf添加global_defs {router_id lb1}vrrp_script check_nginx_proxy {script “/sh/check_nginx_proxy.sh”interval 2weight 5}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.8.254}track_script {check_nginx_proxy}}systemctl restart keepalived
3)主服务器添加计划任务crontab -e* * * * * /bin/bash /sh/check_nginx_proxy.sh
完成
以上就是我们在LNMP环境下实现负载均衡和高可用性的基本思路和方法。需要注意的是,不同的系统和服务可能有其特殊的需求和问题,因此在实际操作中需要根据具体情况灵活运用。
敬请关注博主,我们将持续为您带来云计算行业及更多前沿技术的最新信息,助您把握技术动态,领先一步!”
若您渴望深入了解云计算知识,或希望与云计算、运维、网络等领域的精英们共同交流学习,欢迎您私信博主,博主将为您提供宝贵的免费学习资料,并引荐您加入专业交流群。在这里,您可以与各路大咖切磋技艺,共享行业前沿资讯,一同成长进步。期待您的参与,让我们共同开启云计算领域的探索之旅!




原文作者:网络豆云计算学堂;如有侵权,请联系管理员删除。