网上有许多做负载均衡的文章,都是大神写的高级方法,对于小白来说有点不太容易,我自己也不会搞。因此自己根据网上搜索的资源来自己整理了一份做AWS ALB的简易方法,此方法亲自验证,但与每个人的配置环境有一定区别,想使用的请自己根据创建过程自行修改适合自己的方法。
本过程使用LNNPA+Ubuntu20.04做为服务器环境。
无需一个一个的输入命令,无需值守,编译安装优化编译参数,提高性能,解决不必要的软件间依赖,特别针对配置自动优化。支持自定义Nginx、PHP编译参数及网站和数据库目录、支持生成LetseEcrypt证书、LNMP模式支持多PHP版本、支持单独安装Nginx/MySQL/MariaDB/Pureftpd服务器,同时提供一些实用的辅助工具如:虚拟主机管理、FTP用户管理、Nginx、MySQL/MariaDB、PHP的升级、常用缓存组件Redis/Xcache等的安装、重置MySQL root密码、502自动重启、日志切割、SSH防护DenyHosts/Fail2Ban、备份等许多实用脚本。
负载均衡最重要的就是数据的同步,分为网站源码的文件同步和数据库的同步。网上有一些介绍使用AWS S3存储来同步网站源码的,我也测试了,可以使用,但EC2与S3之间的延迟过大,会造成网站WTTB时间过大,网站加载缓慢,无法接受,后来决定使用一台EC2做为NFS服务器来放网站源码,再开其它EC2服务器来提供Nginx服务,并挂载NFS服务器上的网站源码文件夹,这样可以做到网站源码文件的同步问题,各个EC2之间的延迟相对于S3来说还是比较小的,但仍然有一定延迟,对网站速度影响大约为10%,在网站使用了page cache、CDN后,这个延迟的影响会更小。数据库的同步非常简单,只需要使用AWS RDS服务即可。
- 创建用于放文件的NFS服务器
- 启动1个EC2实例,系统选择ubuntu 20.04
- 查找EC2的IP地址并使用SSH登陆EC2服务器
- 使用apt-update, apt-upgrade为操作系统所有软件升级到最新版本
- 下载LNMP最新版本,当前为1.8测试版本
wget http://soft.vpser.net/lnmp/lnmp1.8beta.tar.gz
- 解压缩lnmp1.8beta.tar.gz
tar zxf lnmp1.8beta.tar.gz
- 进入lnmp1.8目录
cd lnmp1.8
- 如果使用了LNMPA进行安装(Nginx+apache),为了保证Nginx日志可以正确的获取到访客IP地址,可以提前编辑lnmp.conf配置文件,添加Nginx模块with-http_realip_module
vi lnmp.conf
Nginx_Modules_Options='' 后添加需要添加的模块
Nginx_Modules_Options='--with-http_realip_module'
- 如果安装的时候没有添加这个模块,或是安装后想添加新的模块,均可以编辑这个文件,然后执行./upgrade.sh nginx
- 使用
./install.sh lnmpa
安装lnmpa环境- 根据自己的需求选择对应的版本来安装
- php版本建议安装7.4版本,8.0版本部分主题和插手不兼容
- 为了数据库同步,可以不安装mysql直接使用AWS RDS服务
- 如果需要节省费用,也可以在NFS上安装mysql,然后wordpress数据库选择nfs上的服务器即可。注:lnmp 中的mysql和ubuntu默认均没有打开mysql的3306端口,需自行开启mysql的远程访问和ubuntu防火墙的3306端口
- 等待lnmp安装完成
- 修改nginx配置文件 /usr/local/nginx/conf/nginx.conf,添加real_ip_header头,使nginx日志可以正确的记录访客源ip
vi /usr/local/nginx/conf/nginx.conf
- 在access_log off;之后添加
real_ip_header X-Forwarded-For;
real_ip_recursive on;
set_real_ip_from 172.31.0.0/16;
- (ip为elb网段地址)
- 保存重启
- 安装NFS软件服务器
apt-get install nfs-kernel-server
- 配制文件
vi /etc/exports
, 添加以下条目 - /home/wwwroot/wordpress *(rw,sync,no_root_squash)
- 其中/home/wwwroot/wordpress为共享目录,即源程序所在的目录,rw为可读写操作。注:可以把nfs源程序目录和alb目录设置为一样的,这样方便把nfs服务器也加入到alb里面,不需要再做任何修改。
- 开启nfs服务
/etc/init.d/nfs-kernel-server start
- 重启nfs命令为
/etc/init.d/nfs-kernel-server restart
- 或
service nfs-kernel-server restart
- 配置第一个ALB服务器
- 重复步骤一的1-10的步骤,如果在步骤一中安装了数据库,ALB服务器不需要安装数据库
- 安装NFS软件客户端
apt-get install nfs-common
- 创建一个准备用于挂载的文件夹 /home/wwwroot/wordpress,文件夹路径最好和EFS上的一致,方便在应急的情况下把EFS服务器直接加入到ALB组里面。
- 远程mount
mount -t nfs 172.16.1.14:/home/wwwroot/wordpress /home/wwwroot/wordpress
- ip为nfs服务器ip
- 第一个/home/wwwroot/wordpress为NFS上共享的路径,第二个/home/wwwroot/wordpress为ALB服务器上的路径
- 挂载如果出现问题 mount.nfs: access denied by server while mounting
- 修改 vi /etc/exports
/home/wwwroot/wordpress *(rw,sync,no_root_squash,insecure)
- 下载wordpress安装包
- 在nfs服务器上获取wordpress最版安装包
cd /home/wwwroot
wget https://wordpress.org/latest.zip
unzip latest.zip
- 此时解压缩后的文件夹名为latest, 可以把原来的文件夹先删除,再修改latest文件夹名为wordpress,也可以在之前配置NFS时先不创建wordpress文件夹,这里直接修改
rm -r wordpress
mv latest wordpress
- 在alb服务器对应的文件夹里确认可以看到共享文件夹里面的内容
- 在nfs服务器上使用lnmp vhost add添加自己的网站配置
- 所有选顶根据自己的情况来填写
- 在alb服务器上重复上一个步骤
- 在nfs服务器上获取wordpress最版安装包
- 创建负载均衡器
- 进行负载均衡器,点击创建负载均衡器,
- 选择Application Load Balancer,点击创建
- 名称:自定义名称
- 模式:面向interent
- ip地址类型,根据自己的选择,默认ipv4
- 侦听器->负载均衡器协议
- 根据情况选择,http网站选用http,不需要证书,https网站选用https,之后需要选择证书
- 可用区
- VPC选择自己ec2所在的vpc
- 可用区可全部选择,也可以只选择ec2所在的可用区
- 附加服务,附加服务可以之后再创建,也可以完全不用,和负载均衡是不同的内容
- 点击下一步
- 如果之前添加了https协议,这一步需要添加证书,
- 如果自己有证书,可以选择将证书上传到 ACM (推荐)
- 如果没有证书,可以向 ACM 要求一个新的证书,然后再继续
- 下一步
- 配置安全组,根据自己情况选择现有的安全组,或是创建新的安全组
- 配置路由
- 目标组
- 目标组:新建目标组
- 名称:自定义名称
- 目标类型:实例
- 协议:根据情况选择是http还是https
- 运行状况检查
- 协议:根据情况选择是http还是https
- 其它默认
- 目标组
- 下一步,注册目标
- 选中alb服务器,点击添加到已注册
- 下一步,审核
- 如果没有问题,审核可直接通过,负载均衡器已经可以开始使用
- 如果有问题,根据提示修改
- DNS解析
- 进入负载均衡器,点击刚刚创建的负载均衡器,复制描述里面的DNS 名称
- 进入自己的域名管理网站,(万网,Godaddy等),对要使用的域名做cname解析,解析到DNS名称上
- 安装wordpress
- 在浏览器中输入自己的域名,按正常安装wordpress的步骤来安装wordpress
- 创建更多的alb服务器
- 对第一台alb服务器的卷做快照
- 选择对应的快照,点击操作,创建映像
- 名称:自定义名称
- 点创建
- 启动新的ec2,在启动的过程中选择我的AMI,选择刚刚创建的映像
- 启动完全后进入ec2, 使用mount命令挂载efs上文件夹,同第二步,第4个小步骤
- 进入负载均衡器,选择目标群组,点击注册目标,把刚刚启动的ec2注册到目标群里面
- 为了更简单的增加新的alb服务器,可以在第七步之前设置开机自动挂载
vi /etc/rc.local
- 添加内容
!/bin/sh
sleep 10
mount -t nfs 172.16.1.14:/home/wwwroot/wordpress /home/wwwroot/wordpress
sleep 1
exit 0
- 然后执行
chmod +x /etc/rc.local
ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/
- 完全后重启,使用命令
df -h
测试
本站所有测试环境均使用ubuntu+lnmp
所有的测试、优化均基于lnmp进行,大部分方法均是相通的,仅仅因为是lnmp是一键安装,集成了大部分安装脚本,方法配置。
本人对于服务器,网站运行环境是十窍通了九窍,还有一窍不通,一桶不满,半桶晃荡,所以在配置上能偷懒的就偷懒,能省事的就省事,并且这些配置仅仅为自己配置过的记录,所有配置均自己在自己服务器上实现,并不一定通用所有配置环境,并且文章描述也可能不通顺,前言不搭后语,驴唇不对马嘴,请需要参照此文章配置的客观慎思而行,不保证你配置的时候一定可以成功。
此段落本站所有文章均有,作者已完成自我批评,只接受评论区指正,不再接受批评,谢谢。