写在开头
我计划发表四个篇章的博文,难度由浅入深,分别是基础篇的Linux系统,进阶篇的web架构,高级篇的shell编程、代码上线,大神篇的数据库、Docker、k8s。思考许久,还是决定直接开始进阶篇的博文,离开了近两周很是抱歉,因为现实需要处理一些事情,这次回归,干脆就开启新的篇章,先前介绍的运维知识基础篇的内容,好像就差一个网络了,等有空的时候再做补充,我们直接开始集群架构的学习。
转变思维
进阶篇的学习不同于基础篇,先前的学习,知识点比较零散,我们只有反复练习,才能把它弄熟练。但是今后我们要学的东西,是一个框架,需要先学框架体系,再学习里面的内容。另外进阶篇的知识理解要大于操作,如果你跳槽,框架体系都是一样的,个别业务不一样,简单业务熟悉了也能上手。
架构体系
在服务器上部署网站服务,需要有数据库,NFS存储,运维人员。
公司一开始部署时,不知道流量大小,先部署一台,这样优势是成本低,劣势是用户多,服务器抗压能力弱,如果一台服务器出现某些问题导致无法访问,我们就称它是单点故障。
一台服务器的硬件会受到限制,cpu,内存,磁盘,数量不会太多,所以我们就需要用多台服务器去装业务。比如传统行业的官网、访问量少的网站,不是特别重要的网站,一台服务器就OK,挂了我们再恢复,顶多是一段时间无法访问。
像一些存在交易性质的网站,无时无刻不再交易,所以不能挂掉。需要用多台服务器去抗流量,抗并发。
LNMP框架:Linux操作系统,Nginx,MySQL数据库,PHP代码
也可以是:Linux,Nginx,MySQL,Python
LNMP框架:Linux,Nginx,MySQL,Tomcat(java)
LAMP框架:Linux,Apache,MySQL,PHP,Python
用户访问流程:
1.用户通过网络访问到达防火墙,这里centos6是Iptable,centos7是Firewalld,也有WAF防火墙,用于阻挡web层面的攻击。
2.再通过负载均衡,把流量分布到服务器中,这里的软件有Nginx,Haproxy,LVS,硬件有F5。
3.服务器中服务有Nginx、Tomcat、Apache、PHP(web服务器用于连接数据库的服务)
4.此时看请求是什么,请求热点的数据用Redis缓存服务器,如果是请求动态数据,就去找数据库,如果是请求静态数据,就找文件存储服务器(NFS、NAS、OSS),文件储存服务器也有缓存,叫CDN,不在自己的web服务器上去拿数据。
5.这些运行过程都可以通过ELK服务(日志展示平台)展示出来。还会用到zabbix监控,出现问题及时发现。可以用Ansible批量化管理。这些服务可能会部署到以下地方。
1、Vmware虚拟机(教学使用)
2、公有云(阿里云、腾讯云、亚马逊云平台)
3、私有云平台,自己公司购买服务器组成虚拟化平台Openstack
4、硬件/托管到idc机房,基于硬件的Docker Kubeneters
代码上线相关,开发写完代码扔到代码管理平台gitlab或者github,再用Jenkins进行拉取代码质量检测,检测有没有bug或漏洞,检测完之后通知相关人员,没有问题后,运维再用Jenkins先部署到一台服务器测试(人工、工具检测,指标反馈)
虚拟机准备
我们先创建一个模板机,正常创建虚拟机即可,不会创建看下面文章。
如何在VMware上创建Linux系统(CentOS7.9)
创建好后我们连接Xshell进行虚拟机优化,不会连接看下面文章。
优化linux系统流程
1、修改默认YUM仓库和扩展epel仓库
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
添加扩展仓库:
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
2、安装常用命令
yum -y install net-tools lrzsz wget tree vim unzip bash-completion bash-completion-extra ntpdate
3、增加一块内网网卡,并将网卡命名为eth1
vim /etc/sysconfig/network-scripts/ifcfg-eth0,优化网卡文件,删除多余部分
详细可见此文章:优化网卡配置文件
cp ifcfg-eth0 ifcfg-eth1 #复制成eth1网卡文件
vim ifcfg-eth1 #修改成如下状态
4、优化服务器
systemctl disable firewalld
systemctl stop firewalld
5、关闭selinux
6、调整进程最大打开文件数量
echo '* - nofile 65535' >> /etc/security/limits.conf
7、reboot重启虚拟机
优化过后我们可以通过检查防火墙状态或者查看命令是否可以用等方式测试下是否优化好。
没有问题后,我们关机,做个快照,进行克隆。
克隆虚拟机流程
以准备Rsync备份服务器为例:
我们使用链接克隆,要保证模板机一直可以用,否则克隆机也用不了了。
克隆好后,我们把克隆机打开,修改IP地址、修改主机名称、重启、创建新的xshell会话、做快照(可以开着做,不用挂起)
1. [root@formwork ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 2. TYPE=Ethernet 3. BOOTPROTO=none 4. NAME=eth0 5. DEVICE=eth0 6. BOOT=yes 7. IPADDR=10.0.0.41 8. PREFIX=24 9. GATEWAY=10.0.0.2 10. DNS1=223.5.5.5 11. ~ 12. ~ 13. ~ 14. ~ 15. ~ 16. ~ 17. <pts/ifcfg-eth0" 9L, 121C written 18. [root@formwork ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 19. TYPE=Ethernet 20. BOOTPROTO=none 21. NAME=eth0 22. DEVICE=eth0 23. ONBOOT=yes 24. IPADDR=172.16.1.41 25. PREFIX=24 26. ~ 27. ~ 28. ~ 29. ~ 30. ~ 31. ~ 32. ~ 33. ~ 34. <ipts/ifcfg-eth1" 7L, 91C written 35. [root@formwork ~]#
hostnamectl set-hostname backup
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!