linux12 - 个人笔记 --期中架构项目

这是一个关于Linux期中架构项目的个人笔记,涵盖了项目背景、架构设计、相关工具、实现效果、优化内容及详细的剧本编写过程,包括web集群的nginx和php安装、nfs共享、备份服务器、db数据库、prometheus监控等多个环节。
摘要由CSDN通过智能技术生成

期中架构项目

一、 项目背景

    随着互联网的发展,互联网规模越来越大、服务的架构越来越复杂多样,对运维工程师的需求也是会越来越急迫,对人正在从事或者即将从事运维行业的人们来说,是一个很好的消息。
    自然而然地运维工程师需求量也会很大,而且是随着运维工作的积累,越来越值钱。一个优秀的运维工程师,有强烈的责任心和主动性,对自己的所负责工作有owner意识,并且能自我驱动不断学习与成长。
    而且能够承担较大工作压力,有独立较强的分析解决问题的能力。在工作当中胆大心细,并且还要具备探索创新的精神。目前所有岗位要求,都要会精通shell/Python/Perl等至少其中1种语言,并且精通Linux命令。
    所以说,这就是运维行业的优势,我们还等什么呢?

二、架构

http://processon.com/diagraming/605ade737d9c08555e528b70
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JvxVSxUR-1623074025434)(C:\Users\17155\Desktop\下载图片\1622912294388.png)]

三、相关的实现工具

主机 内网IP 外网IP 项目与服务
web01 172.16.1.7 textpattern,decmsv6
web02 172.16.1.8
web03 172.16.1.9
backup 172.16.1.41 rsync备份服务器
nfs 172.16.1.31 nfs、sersync实时共享服务器
lb01 172.16.1.5 负载均衡,keepalived,cacahe缓存
lb02 172.16.1.6
db01 172.16.1.51 数据库管理,redis
prometheus 172.16.1.71 192.168.15.71 普罗米修斯监控
openvpn 172.16.1.125 OPENVPN内部共享数据
四、实现的效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66Z8adRU-1623074025437)(C:\Users\17155\Desktop\下载图片\1622912168950.png)]

五、优化内容

1、时间服务器
2、除了基础的备份还需要备份配置文件,脚本文件,定时任务等等。
3、数据库的读写分离,以及负载均衡调度。
4、授权目录或文件权最小化原则。
5、同步教据需要限速,提高用户体验。
6、加速缓存Php 、mysql ,残小后端压力。
7、防劫持使用https加密方式。
8、Nginz. 、php细部优化
9、nfs单台故障用ceph代替
10、横向扩展服务器
项目设计:
     通过ansible一键部署DedeCMSV6、textpattern项目,首先我们都是通过openvpn实现内部机器共享上网,其中所用到的服务有基础的LNMP架构,随web服务端是数据增大,其web端承受的压力势必增加,抗容灾压力也大,所以我们做了一个负载均衡+keepalived的架构。
     所有的数据都会放在数据库里,向后可以做数据库的主从复制。(MAH高可用)
   一些重要数据我们需要保存,所以又增加了nfs共享数据,实现动静分离,数据共享,sersync+rsync实时备份实现了全网数据共享,然后通过prometheus监控数据与状态。

六、剧本编写

1.前言
 # 1.免密
root@openvpn ~]# ssh-keygen
[root@openvpn ~]# cat ssh-jump.sh  
#!/bin/
for i in 'web01' 'web02' 'web03' 'lb01' 'lb02' 'db01' 'nfs' 'backup' 'prometheus'

do

expect -c "

spawn ssh-copy-id -i root@$i

expect {

\"(yes/no)\" {send \"yes\r\";exp_continue}

\"password\" {send \"123\r\";exp_continue}
}


"

done
# 2.配置本地hosts
[root@m01 roles]# vim /etc/hosts
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.31 nfs
172.16.1.41 backup
172.16.1.51 db01
172.16.1.71 prometheus
[root@openvpn ~]# cat hosts.sh 
#!/bin/

for i in 'web01' 'web02' 'web03' 'lb01' 'lb02' 'db01' 'nfs' 'backup' 'prometheus'

do

scp -r /etc/hosts root@$i:/etc/hosts

done

# 3.分别执行脚本
[root@openvpn ~]# ./hosts.sh 
[root@openvpn ~]# ./ssh-jump.sh
2.配置主机清单
[root@openvpn ~]# cat /etc/ansible/hosts 
[web_group] 
web01
web02
web03

[nfs_group]
nfs

[slb]
lb01
lb02

[db]
db01

[backup_group]
backup

[prometheus_group]
prometheus ansible_ssh_pass='123'

[rmon_group:children]
web_group
slb
3.创建所有目录
[root@openvpn project]# mkdir /project/  #剧本存放的目录
[root@openvpn project]# mkdir /project/roles
[root@openvpn project]# touch /project/site.yml  # lnmp目录
[root@openvpn project]# touch /project/rmon.yml  # 监控目录
[root@openvpn project]# ll
total 4
drwxr-xr-x 15 root root 187 Jun  4 10:18 roles
-rw-r--r--  1 root root 534 Jun  4 11:31 site.yml
-rw-r--r--  1 root root 365 Jun  4 21:57 site.yml

[root@m01 roles]# ansible-galaxy init nginx # 依次创建以下目录
- Role nginx was created successfully
[root@m01 roles]# ll
drwxr-xr-x 10 root root 4096 May 26 23:11 base
drwxr-xr-x 10 root root 4096 Jun  2 18:08 blog
drwxr-xr-x 10 root root 4096 Jun  3 20:45 database
drwxr-xr-x 10 root root 4096 Jun  2 21:24 keepalived
drwxr-xr-x 10 root root 4096 May 25 23:56 mysqld
drwxr-xr-x 10 root root 4096 Jun  3 20:36 nfs
drwxr-xr-x 10 root root 4096 May 27 00:21 nginx
drwxr-xr-x 10 root root 4096 May 25 23:56 php
drwxr-xr-x 10 root root 4096 Jun  4 09:14 prometheus
drwxr-xr-x 10 root root 4096 Jun  4 21:13 prometheus-db
drwxr-xr-x 10 root root 4096 Jun  4 17:39 prometheus-web
drwxr-xr-x 10 root root 4096 May 29 15:53 rsync
drwxr-xr-x 10 root root 4096 May 27 21:44 slb
drwxr-xr-x 10 root root 4096 Jun  3 21:34 web-nfs
4.剧本依次编写
一、优化部分
# 剧本准备文件
[root@m01 files]# pwd
/project/roles/base/files
[root@m01 files]# ll
total 12
-rw-r--r-- 1 root root 2523 May 26 23:13 CentOS-Base.repo
-rw-r--r-- 1 root root  664 May 26 23:13 epel.repo
-rw-r--r-- 1 root root  473 May 26 23:13 sysctl.conf
[root@m01 files]# cat sysctl.conf  # 内核优化
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
net.ipv4.ip_forward = 1

# 优化剧本编写
[root@openvpn tasks]# cat ../defaults/main.yml # 变量
USER_NAME: www
GROUP_NAME: www
UID: 666
GID: 666

[root@openvpn base]# cat tasks/main.yml 
- name: stop selinux
  selinux:
    state: disabled

- name: stop firewalld
  systemd:
    name: firewalld
    state: stopped

- name: config yum CentOS.repo
  copy:
    src: CentOS-Base.repo
    dest: /etc/yum.repos.d/

- name: config yum epel.repo
  copy:
    src: epel.repo
    dest: /etc/yum.repos.d/

- name: config sysctl.conf
  copy:
    src: sysctl.conf
    dest: /etc/
  notify: restart_sysctl

- name: create www group
  group:
    name: "{
  { USER_NAME }}"
    gid: "{
  { UID }}"

- name: create www user
  user:
    name: "{
  { USER_NAME }}"
    group: "{
  { GROUP_NAME }}"
    uid: "{
  { UID}}"
- name: install ntpdate server
  yum:
    name: ntpdate
    state: present

- name: ntpdate.aliyun.com
  shell: "ntpdate ntp.aliyun.com"
二、web集群安装nginx和php
# web_group机器安装nginx准备文件
[root@m01 files]# pwd
/project/roles/nginx/files
[root@m01 files]# ll
total 8
-rw-r--r-- 1 root root 720 May 26 23:31 nginx.conf  # 改成 user=www
-rw-r--r-- 1 root root 378 May 26 23:29 nginx.repo

# web_group机器安装nginx剧本编写
[root@openvpn ngin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FikL-09-19

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值