【亿级用户】大型项目服务器弹性扩容方案(含操作步骤)

限于喜欢 提交于 2020-02-29 19:33:18

        岁月如梭,一年一度的光棍节又来了。博主和往年一样,干着节假日加班的活。不知道此时此刻是否有一大波xxx丝和博主一样呢?当前闲暇时刻,博主忍不住给各位xxx丝同僚们来一波进补,为了博主的无私奉献,也为了节假日的基情节,请大家别忘了给博主来一波大大的点赞啊!

        背景介绍:某个大型项目,平常日访问量(pv)大概在500万左右,web服务器50台。节假日这个大型秒抢活动的时候,经往年的流量峰值和去年到今年的用户增长量来评估,项目组决定增添50台web服务器来抗流量。由于新增的50台服务器是通过vpn+堡垒机+web运维系统的形式访问,项目组没有密码,所以无法做脚本一键扩容等等操作,下面的操作都为手动的。

        操作步骤:

        一、备份之前已经部署好的web服务器tomcat目录(用于扩容使用)

#备份apache-tomcat-7.0.57
nohup tar --exclude  /opt/www/apache-tomcat-7.0.57/temp --exclude /opt/www/apache-tomcat-7.0.57/logs --exclude /opt/www/apache-tomcat-7.0.57/webapps/xxxmp/attached --exclude  /opt/www/apache-tomcat-7.0.57/webapps/xxxmp/download --exclude /opt/www/apache-tomcat-7.0.57/webapps/xxxmp/uploads  -zcvf /opt/backup/xxxmp-apache-tomcat-7.0.57.tar.gz /opt/www/apache-tomcat-7.0.57  1>/opt/backup/xxxmpcodebackup.log 2>/dev/null & 
#备份t1(tomcat服务器)
nohup tar --exclude  /opt/www/t1/temp --exclude /opt/www/t1/logs --exclude /opt/www/t1/webapps/xxxmp/attached --exclude  /opt/www/t1/webapps/xxxmp/download --exclude /opt/www/t1/webapps/xxxmp/uploads  -zcvf /opt/backup/xxxmp-t1.tar.gz /opt/www/t1  1>/opt/backup/xxxmpcodebackup.log 2>/dev/null & 

        二、jdk安装

rpm -qa|grep java
rpm -e --nodeps java-1.6.0-openjdk-javadoc-1.6.0.41-1.13.13.1.el6_8.x86_64
rpm -e --nodeps java-1.7.0-openjdk-devel-1.7.0.131-2.6.9.0.el6_8.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64
rpm -e --nodeps java-1.6.0-openjdk-devel-1.6.0.41-1.13.13.1.el6_8.x86_64
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64
rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
rpm -qa|grep java
rpm -ivh jdk-7u72-linux-x64.rpm

java -version
#查询java目录
which java
java -verbose

#修改配置文件
vi /etc/profile
#跳到文件结尾
shift+G
#下一行新增进入插入模式
o
#粘贴下面的
export JAVA_HOME=/usr/java/jdk1.7.0_72
PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#保存
shift+Z+Z

cat /etc/profile
source /etc/profile
java -version

        三、tomcat安装(tomcat、代码解压到相应目录)

tar -zxvf  xxxmp-apache-tomcat-7.0.57.tar.gz -C /
tar -zxvf  xxxmp-t1.tar.gz -C /

        四、创建tomcat中web项目下需要挂载的目录

mkdir -p /opt/www/apache-tomcat-7.0.57/webapps/xxxmp/attached
mkdir -p /opt/www/apache-tomcat-7.0.57/webapps/xxxmp/uploads/excel
mkdir -p /opt/www/t1/webapps/xxxmp/attached
mkdir -p /opt/www/t1/webapps/xxxmp/uploads/excel

        五、创建备份时删除的tomcat日志目录

mkdir -p /opt/www/apache-tomcat-7.0.57/logs 
mkdir -p /opt/www/t1/logs 

        六、nfs共享文件挂载

#显示资源nfs服务器的开放的共享目录情况
showmount -e 10.x.x.xxx

#新服务器
mount -t nfs 10.x.x.xxx:/opt/data/attached /opt/www/apache-tomcat-7.0.57/webapps/xxxmp/attached
mount -t nfs 10.x.x.xxx:/opt/data/uploads/excel /opt/www/apache-tomcat-7.0.57/webapps/xxxmp/uploads/excel
mount -t nfs 10.x.x.xxx:/opt/data/attached /opt/www/t1/webapps/xxxmp/attached
mount -t nfs 10.x.x.xxx:/opt/data/uploads/excel /opt/www/t1/webapps/xxxmp/uploads/excel

#查看mount挂载情况
mount

#开机自动挂载
vi /etc/fstab
#在最后添加如下内容
10.x.x.xxx:/opt/data/attached /opt/www/apache-tomcat-7.0.57/webapps/xxxmp/attached nfs rw,tcp,intr 0 1
10.x.x.xxx:/opt/data/uploads/excel /opt/www/apache-tomcat-7.0.57/webapps/xxxmp/uploads/excel  nfs rw,tcp,intr 0 1
10.x.x.xxx:/opt/data/attached /opt/www/t1/webapps/xxxmp/attached nfs rw,tcp,intr 0 1
10.x.x.xxx:/opt/data/uploads/excel /opt/www/t1/webapps/xxxmp/uploads/excel nfs rw,tcp,intr 0 1

#重启系统测试
reboot

        七、网络检查

#网络检查(nginx到服务器、服务器到数据库、服务器到redis、外网访问权限)
nc -v 10.x.x.xxx 6xx9
nc -v 10.x.x.xxx 8xx6
ping  10.x.x.xx1
ping  10.x.x.xx2
ping  10.x.x.xx8

#telnet命令被用来检测是个远端端口是否通畅。
[root@oldboy ~]# telnet baidu.com 80
Trying 123.125.114.144...
Connected to baidu.com (123.125.114.144). #==>出现Connected表示连通了,说明百度的80端口开放的
Escape character is '^]'. #==>ctrl+]退出此地。
^]
telnet> quit
Connection closed.

        八、域名配置/etc/hosts(到微信服务器的访问映射)

#域名解析映射(非必须)
58.246.220.31   api.weixin.qq.com
101.226.212.27  api.weixin.qq.com  file.api.weixin.qq.com
101.227.162.120 api.weixin.qq.com
116.211.185.150 res.wx.qq.com
116.211.169.230 v.juhe.cn

#检查第三方api接口域名是否畅通
ping v.juhe.cn
ping api.weixin.qq.com
ping file.api.weixin.qq.com
ping res.wx.qq.com
ping v.juhe.cn

        九、可打开的最大文件句柄数配置

ulimit -a  查看open file数
ulimit -n  查看当前用户的每个进程最多允许同时打开1024个文件

#设置当前用户的最大文件限制
ulimit -n 65535
#ulimit命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效 

#设置永久生效
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

reboot

        十、启动web服务器校验

sh startup.sh
wget http://127.0.0.1:8080/xxxmp
wget http://127.0.0.1:8089/xxxmp

        十一、nginx配置上线

vi  /usr/local/nginx/conf/nginx_go_online.conf
#添加server
server 10.x.x.xxx:8080  weight=2 max_fails=1 fail_timeout=10s;
server 10.x.x.xxx:8080  weight=2 max_fails=1 fail_timeout=10s;
...
server 10.x.x.xxx:8089  weight=2 max_fails=1 fail_timeout=10s;
server 10.x.x.xxx:8089  weight=2 max_fails=1 fail_timeout=10s;
...
...
#发布到其它nginx服务器
scp  remote_username@remote_ip:remote_folder
scp  /usr/local/nginx/conf/nginx_go_online.conf root@10.x.x.xxx:/usr/local/nginx/conf/nginx_go_online.conf
scp  /usr/local/nginx/conf/nginx_go_online.conf root@10.x.x.xxx:/usr/local/nginx/conf/nginx_go_online.conf
#一键上线所有nginx
sh n_go_online_ssh.sh

        十三、验证web服务器业务是否正常

        十四、查询javamelody监控是否正常(https://xxxcluxxx.myxxxx.com/xxxmp/monitoring)

        

        以上是整个扩容过程,当然博主在扩容过程中遇到了些问题、包括:tomcat的session同步问题(经分析是因为备份之后换了之前的redis session共享包引起)、nfs忘记配置重启自动挂载等等。这些都已经整理在以上博客中。

       最后寄语,以上是博主本次文章的全部内容,如果大家觉得博主的文章还不错,请点赞;如果您对博主其它服务器大数据技术或者博主本人感兴趣,请关注博主博客,并且欢迎随时跟博主沟通交流。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!