架构介绍
1. 中小规模网站架构组成
- 用户 — 访问网站的人员
- 防火墙 — 进行访问控制策略 (firewalld)
- 外网交换机 — 负责用户、防火墙和web、负载服务器的连接
- 负载均衡服务器 — 对用户的访问进行调度处理(nginx)
- web 服务器 — 处理用户的请求(nginx)
- 内网交换机 — 负则 web 服务器与存储数据的服务器的连接
- 数据库存储服务器 — 存储的字符数据(mysql)
- 存储服务器 — 存储图片、音频、视频、附件等(nfs)
- 备份服务器 — 存储网站所有服务器的重要数据(rsync+crond-定时备份 rsync+sersync-实时备份)
- 缓存服务器 — 将数据信息存储到内存中,减缓服务器的压力( memcache redis mongodb)
- 批量管理服务器 — 批量管理多台服务器主机(ansible)
- VPN 服务器 — 内部人员通过外网访问公司内网的保护
- 审计服务器/跳板机 ---- 监控内部人员的操作
- 监控服务 — 监控每台服务器的状态
2. 部署网站架构需要注意的问题
- 需要解决网站架构单点问题
- 负载均衡服务器:高可用服务 ---- keepalived
- 数据库:高可用服务 — mha
- 存储服务:高可用服务 — keepalived / 分布式存储
- 备份服务:
- 利用开源软件实现数据备份 rsync
- 利用企业网盘进行数据备份 七牛云存储
- 利用自建备份存储架构 两地三中心
- 缓存服务:高可用服务 — 缓存服务集群/哨兵模式
- 内部人员如何远程访问服务器
- 部署搭建 VPN 服务器 — pptv vpn
- 内部人员操作管理架构服务器需要审计
- 跳板机服务器 — jumpserver
- 架构中服务器出现问题需要进行提前报警告知
- 部署监控服务器 — zabbix
3.架构规划
-
主机名称和 IP 地址的规划
服务器名称 英文 外网地址 内网地址 软件 防火墙服务器 firewalld firewalld 负载均衡服务器 lb01 nginx keepalived 负载均衡服务器 lb02 nginx keepalived web 服务器 web01 192.168.80.132 172.16.1.132 ngiinx web 服务器 web02 nginx web 服务器 web03 nginx 数据库服务器 db01 MySQL 存储服务器 nfs01 192.168.80.130 172.16.1.130 nfs 备份服务器 backup 192.168.80.131 172.16.1.131 rsync 缓存服务器 批量管理服务器 m01 192.168.80.133 172.16.1.133 ansible 跳板机 jumpserver jumpserver 监控服务器 zabbix zabbix
4. 系统优化
1.进行网络配置
-
添加私网网卡
-
配置私网网卡
$ vi ifcfg-eno33554984 [配置内容如下] BOOTPROTO=static NAME=eno33554984 DEVICE=eno33554984 ONBOOT=yes IPADDR=172.16.1.129 NETMASK=255.255.255.0 [精致的结尾] $ systemctl restart network $ ip address 3: eno33554984: # inet 172.16.1.129/24 brd 172.16.1.255 scope global eno33554984 如此配置成功! #### 还可以使用 nmtui 命令打开配置网卡界面
-
确认网络配置
ping www.baidu.com PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data. 64 bytes from 110.242.68.4: icmp_seq=1 ttl=128 time=170 ms 64 bytes from 110.242.68.4: icmp_seq=2 ttl=128 time=112 ms
2. 系统优化设置
-
hosts 文件配置
cp /etc/hosts{,.bak} vi /etc/hosts [配置内容如下] 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.1.5 lb01 172.16.1.6 lb02 172.16.1.7 web01 172.16.1.8 web02 172.16.1.9 web03 172.16.1.51 db01 db01.etiantian.org 172.16.1.31 nfs01 172.16.1.41 backup 172.16.1.61 m01 [精致的结尾]
-
优化 yum 源
$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
$ yum clean all && yum makecache
$ yum install -y epel-release
$ yum clean all && yum makecache
-
关闭 selinux
sed -i.bak 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config grep "SELINUX=" /etc/selinux/config # SELINUX= can take one of these three values: SELINUX=disabled setenforce 0 getenforce Permissive
-
关闭防火墙(iptables)
# systemctl stop firewalld #systemctl disable firewalld Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service. # systemctl status firewalld Loaded: loaded
-
提权oldboy可以sudo (可选配置)
useradd oldboy echo 123456|passwd --stdin oldboy \cp /etc/sudoers /etc/sudoers.ori echo "oldboy ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers tail -1 /etc/sudoers visudo -c
-
字符集优化
localectl set-locale LANG="en_US.UTF-8" echo $LANG en_US.UTF-8
-
时间同步
yum install -y ntpdate echo '#time sync by lidao at 2017-03-08' >>/var/spool/cron/root echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root crontab -l
-
加大文件描述
# 由于系统启动后会打开很多文件,然而系统预设的文件个数为 1024,远远不够,所以要加大打开文件的个数,保持系统顺畅运行 echo '* - nofile 65536' >>/etc/security/limits.conf reboot umlimit -a # 查看 open file 是否成功
-
安装其他小软件
yum install epel-release lrzsz nmap tree dos2unix nc telnet wget lsof ntpdate bash-completion bash-completion-extras -y # lrzsz 实现 Linux 与 Windows 互传文件 # nmap 扫描端口 # tree 查看目录结构 # dos2unix 将 windows 中的一些字符集转换成 Linux 能够识别的 # nc 网络相关 # bash-completion 超强补全功能 --- 好像不怎么管用
-
ssh 连接速度慢优化
sed -i.bak 's@#UseDNS yes@UseDNS no@g;s@^GSSAPIAuthentication yes@GSSAPIAuthentication no@g' /etc/ssh/sshd_config systemctl restart sshd
3. 克隆模板主机
-
进行模板机快照操作
-
进行克隆
- 链接克隆(学习环境)
- 优势:
- 节省物理主机资源
- 克隆主机效率快
- 劣势:
- 模板主机删除,链接主机也会失败
- 优势:
- 完整克隆(企业环境)
- 优势:
- 模板主机删除,克隆主机依然可以使用
- 劣势
- 耗费物理主机资源
- 克隆主机效率低
- 优势:
- 链接克隆(学习环境)
-
修改 IP 地址和主机名
sed -i.bak 's#IPADDR=192.168.80.129#IPADDR=192.168.80.132#g' /etc/sysconfig/network-scripts/ifcfg-eno16777736 sed -i.bak 's#IPADDR=172.16.1.129#IPADDR=172.16.1.132#g' /etc/sysconfig/network-scripts/ifcfg-eno33554984 hostnamectl set-hostanme ***
-
克隆好的主机无法远程连接
- 利用 ping 方式,加 -t 参数持续数 10 秒
- 如果 ping 不通,则关闭 xshell 重新打开