前言
开启实战50台服务器规模集群模式
搭建集群:
- 采购服务器、性能测试
- 采购云服务(云主机、虚拟机)
- 采购带宽,压力测试
- 采购CDN服务
1. 集群图解
2. 服务器规划
- 负载均衡服务器 2台 对访问网站的流量进行分流,减少流量对某台服务器的压力
- web服务器 2台 处理用户页面访问请求(Nginx,Apache)
- NFS存储兼 兼 批量管理 1台 存储图片,附件,头像等静态数据,兼职批量分发和管理
- 备份服务器 1台 对全网服务器数据,进行实时与定时备份
- 数据库服务器 1台 对动态变化数据进行存储(文本内容)
- 管理服务器 1台
- 作为yum仓库服务器,提供全网服务器的软件下载;
- 跳板机、操作审计;
- vpn(pptp);
- 监控服务nagios,zabbix
说明:总计需要服务器8台,完成本次项目
3. 主机规划
服务器说明 | 外网IP | 内网IP | 主机名称规划 |
A1-nginx 负载服务器 01 | 10.0.0.5/24 | 192.168.0.5/24 | lb01 |
A2-nginx 负载服务器 02 | 10.0.0.6/24 | 192.168.0.6/24 | lb02 |
B1-apache web服务器 | 10.0.0.7/24 | 192.168.0.7/24 | web02 |
B2-apache web服务器 | 10.0.0.8/24 | 192.168.0.8/24 | web01 |
C3-mysql数据库服务器 | 10.0.0.51/24 | 192.168.0.51/24 | db01 |
C1-NFS 存储服务器 | 10.0.0.31/24 | 192.168.0.31/24 | nfs01 |
C2-rsync 存储服务器 | 10.0.0.41/24 | 192.168.0.41/24 | backup |
X-管理服务器 | 10.0.0.61/24 | 192.168.0.61/24 | m01 |
提示:
- C1-NFS存储服务器是临时使用,企业场景是没有的
- 斜体的IP在实际是可以没有的,可以配了再关掉查看是否ok
- 负载均衡器的 VIP 10.0.0.3/24
- 带外网IP的服务器的内网IP 不配网关和DNS
- 外部IP该配啥就配啥
- 注意,示例案例要求外网IP和内网IP都是NAT网络,但是mac的虚拟机NAT不支持互联,只支持桥接网络,具体内容根据实际修改。
- 注意,原本的方法中内网IP的网络位是172.16.1.*,但是个人的主机的网络位网段是192.168.0,所以只能根据实际情况修改。
4. hosts解析
将主机域名和IP的dns对应关系添加到/etc/hosts文件。
[root@oldboy network-scripts]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 oldboy
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 oldboy
183.232.231.174 baidu
192.168.0.5 lb01
192.168.0.6 lb02
192.168.0.7 web02
192.168.0.8 web01
192.168.0.51 db01
192.168.0.31 nfs01
192.168.0.41 backup
192.168.0.61 m01
5. 虚拟机环境准备
5.1 模版机准备
【网卡相关设置】
网卡设置:/etc/sysconfig/network-scripts/ifcfg-eth1
ip选择一个不在计划内的指定主机位,可以保证模版机的正常开启,方便查询。【192.168.0.111作为模版机的ip地址】
删除uuid和mac地址。
在/etc/rc.local配置文件中添加:
cat /dev/null > /etc/udev/rules.d/70-persistent-net.rules
实现开机自启动清空网卡配置,避免mac地址和uuid和网卡设备不一致导致的联网失败。
【Linux系统基础优化】
1. 关闭selinux防火墙
- 临时关闭selinux
- setenforce 0 将状态设置为permissive,给出警告提示,但不会阻止操作,相当于disable
- getenforce 查看
- 永久关闭,修改配置文件/etc/selinux/config
2. 关闭iptables
- /etc/init.d/iptables stop 最好执行两遍,确保成功关闭
- chkconfig iptables off
3. 精简开机自启动服务
- chkconfig|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'
- export LANG=en
- chkconfig --list|grep 3:on
4. 授权用户oldboy可以sudo
-
[root@oldboy ~]# useradd oldboy [root@oldboy ~]# \cp /etc/sudoers /etc/sudoers.ori # 备份 [root@oldboy ~]# echo "oldboy ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # 添加授权语句,oldboy授权无密码登陆,所有权限所有主机 [root@oldboy ~]# tail -1 /etc/sudoers oldboy ALL=(ALL) NOPASSWD:ALL [root@oldboy ~]# visudo -c # 语法检查 /etc/sudoers: parsed OK
5. 中文字符集【可选】
cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori echo 'LANG=zh_CN.UTF-8' >/etc/sysconfig/i18n source /etc/sysconfig/i18n
echo $LANG
6. 时间同步
echo "#time sync" >>/var/spool/cron/root echo '*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1' >> /var/spool/cron/root
crontab -l # 检查
7. 命令行安全
[root@oldboy ~]# echo 'export TIMEOUT=300' >>/etc/profile [root@oldboy ~]# echo 'export HISTSIZE=50' >>/etc/profile [root@oldboy ~]# echo 'export HISTFILESIZE=5' >>/etc/profile [root@oldboy ~]# tail -3 /etc/profile export TIMEOUT=300 export HISTSIZE=50 export HISTFILESIZE=5 [root@oldboy ~]# source /etc/profile
8. 调整文件描述符数量(加大)
[root@oldboy ~]# echo '* - nofile 65535 '>>/etc/security/limits.conf [root@oldboy ~]# tail -1 /etc/security/limits.conf * - nofile 65535
9. 内核优化
优化方法是,执行vi /etc/sysctl.conf命令到文件结尾,然后拷贝如下内容并保存。
cat >>/etc/sysctl.conf << EOF net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time = 600 net.ipv4.ip_local_port_range = 4000 65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 net.ipv4.tcp_max_orphans = 16384 # iptables arguments net.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_max = 25000000 net.netfilter.nf_conntrack_tcp_timeout_established = 180 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120 EOF
sysctl -p命令检查输入的参数是否有误,生效。
5.2 backup,nfs等存储服务器准备
网卡配置:更新ip地址。
6. 备份服务器backup --工具rsync