转载

Ansible-实战指南-LNMP环境部署

Ansible-实战指南-LNMP环境部署

序号 主机名称 操作系统版本 内网IP 外网IP(模拟) 安装软件
0 对外提供访问 CentOS7.5 10.0.0.170 keepalived【无主机,只有一个虚拟VIP】
1 ansi-haproxy01 CentOS7.5 172.16.1.181 10.0.0.181 zabbix-agent、haproxy
2 ansi-haproxy02 CentOS7.5 172.16.1.182 10.0.0.182 zabbix-agent、haproxy
3 ansi-web01 CentOS7.5 172.16.1.183 10.0.0.183 zabbix-agent、nginx+php、mysql(master)
4 ansi-web02 CentOS7.5 172.16.1.184 10.0.0.184 zabbix-agent、nginx+php、mysql(slave)
5 ansi-web03 CentOS7.5 172.16.1.185 10.0.0.185 zabbix-agent、nginx+php、mysql(slave)、memcached
6 ansi-manager CentOS7.5 172.16.1.180 10.0.0.180 Ansible、zabbix-server、zabbix-agent、mariadb「zabbix使用」

系统初始化:必要的系统初始化

基础组件包括:zabbix监控,mariadb(用于存放zabbix监控信息)

业务组件包括:MySQL、memcached、nginx、PHP、haproxy、keepalived

添加用户账号

说明:

1、 运维人员使用的登录账号;

2、 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放;

3、 该用户也被 ansible 使用,因为几乎所有的生产环境都是禁止 root 远程登录的(因此该 yun 用户也进行了 sudo 提权)。

# 使用一个专门的用户,避免直接使用root用户
# 添加用户、指定家目录并指定用户密码
# sudo提权
# 让其它普通用户可以进入该目录查看信息
useradd -u 1050 -d /app yun && echo '123456' | /usr/bin/passwd --stdin yun
echo "yun  ALL=(ALL)       NOPASSWD: ALL" >>  /etc/sudoers
chmod 755 /app/

备注:记得在管理机 172.16.1.180 上实现对其他机器的免密登录。

Ansible 配置清单Inventory

[yun@ansi-manager ansible_info]$ cat hosts_key
# 业务组件分组
[manageservers]
172.16.1.180:22

[keepalivedserver]
172.16.1.181
172.16.1.182

[proxyservers]
172.16.1.18[1:2]:22

[webservers]
172.16.1.183 ansible_ssh_port=22
172.16.1.184 ansible_ssh_port=22
172.16.1.185 ansible_ssh_port=22

[memservers]
172.16.1.185

[dbservers]
172.16.1.183
172.16.1.184
172.16.1.185

[dbservers_master]
172.16.1.183

[dbservers_slave]
172.16.1.184
172.16.1.185


# 基础组件分组
## 数据库组件分组
[zabbixdbserver]
172.16.1.180

## 基础业务组件分组
[zabbixserver]
172.16.1.180

系统架构

Ansible-实战指南-LNMP环境部署

实战项目GitHub地址

该项目已经放在了GitHub上,地址如下:

https://github.com/zhanglianghhh/ansible-example-lnmp

如需要请自行访问或下载。

Ansible-实战指南-LNMP环境部署

项目任务分解

获取需求并拿到机器的时候,这时需要我们做如下分析:

1、主机规划:每台主机用于部署什么模块【本文第一节实际已经规划好了】

2、普通用户创建与提权:如果机器是公司统一初始化的,那么可以不创建普通用户,只需提权即可。

3、ansible管理机到其他机器的免密登录。

4、具体任务分解:包括机器必要的初始化、基础组件部署与业务组件部署。如果公司对机器做了统一的初始化,那么视情况而定。

## 系统初始化
1、基础镜像源与epel镜像源
2、必要的包安装
3、指定环境变量,如:为history命令添加时间信息;操作命令记录到系统日志
4、用户名、主机添加背景色,用于生产环境,这样可以减少人为的误操作
5、别名配置,如:alias grep='grep --color=auto'
6、内核参数修改,生产中视情况而定
7、创建web站点用户 www。
8、创建必要的目录,如:软件包存放目录,后期运维脚本存放目录

## 基础组件部署
1、yum 安装mariadb,用于存放监控信息
2、yum 安装zabbix server
3、yum 安装zabbix agent

## 业务组件部署
1、MySQL 数据库部署
2、MySQL 主从实现
3、memcached 部署
4、nginx 部署
5、PHP 部署
6、nginx、PHP整合,nginx、PHP、MySQL整合,nginx、PHP、memcached整合
7、haproxy 部署
8、keepalived 部署

项目编写与后续验证步骤

请参见:

https://github.com/zhanglianghhh/ansible-example-lnmp

这里包含:涉及目录与文件说明;服务部署;停止服务【因为是个人电脑通过虚拟机实现的】;服务验证。

为了避免重复这里就不单独说了,参见上面地址即可。

原文  http://www.zhangblog.com/2020/01/12/ansible-lnmp/
正文到此结束
Loading...