一、项目要求

1、创建role,通过role完成项目(可能需要多个role)

2、部署nginx调度器(node2主机)

3、部署2台lnmp服务器(node3,node4主机)

4、部署mariadb数据库(node5主机)

主要用的ansible实现自动化部署,ansible的安装教程省略,控制节点安装ansible和Python,受控节点上只需要安装相同版本Python(环境一致好些),所有主机间做免密登录

二、项目实施

1、在控制节点上创建role部署lnmp平台环境

[root@control ansible]# ansible-galaxy init ~/ansible/roles/lnmp

2、上传或者下载lnmp_soft.tar.gz里面的nginx-1.16-1.tar.gz软件包到 /root/ansible/roles/lnmp/files/

# 下载Nginx安装包:
[root@control ansible]# wget https://nginx.org/download/nginx-1.16.1.tar.gz
[root@control ansible]# tar -xf lnmp_soft.tar.gz
[root@control ansible]# cp lnmp_soft/nginx-1.16.1.tar.gz /root/ansible/roles/lnmp/files/

2、编写部署lnmp的脚本,配置动静分离

[root@control ansible]# vim /root/ansible/roles/lnmp/files/install_nginx.sh

稍后会使用copy模块把nginx源码包放到tmp目录下,拷贝nginx源码,执行编译安装

#!/bin/bash
conf="/usr/local/nginx/conf/nginx.conf"
yum -y install gcc pcre-devel openssl-devel make
cd /tmp/
tar -xf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure --with-http_ssl_module
make && make install
sed -i '65,71s/#//' $conf
sed -i '/SCRIPT_FILENAME/d' $conf
sed -i 's/fastcgi_params/fastcgi.conf/' $conf

3、部署网页模板文件,通过template把包含变量的模板文件拷贝给目标主机node3 和 node4

[root@control ansible]# vim /root/ansible/roles/lnmp/templates/index.html
Welcome to {{ansible_hostname}} on {{ansible_all_ipv4_addresses}}

4、编写tasks文件,定义任务

[root@control ansible]# vim /root/ansible/roles/lnmp/tasks/main.yml
---
# tasks file for /root/ansible/roles/lnmp
- name: copy nginx-1.16.1.tar.gz to webserver.
copy:
src: nginx-1.16.1.tar.gz
dest: /tmp/
- name: install nginx through shell script.
script: install_nginx.sh
args:
creates: /usr/local/nginx/sbin/nginx # 当nginx主程序文件存在时,不执行安装脚本
- name: copy index.html to webserver. #拷贝首页文件
template:
src: index.html
dest: /usr/local/nginx/html/index.html
- name: install php
yum:
name:
- php
- php-fpm
- php-mysqlnd
- mariadb-devel
- name: run all serveice
block:
- service:
name: php-fpm
state: started
- shell: /usr/local/nginx/sbin/nginx
args:
creates: /usr/local/nginx/logs/nginx.pid
#当nginx的进程号文件存在,说明nginx启动了。则不执行启动nginx

5、编写playbook剧本

[root@control ansible]# vim ~/ansible/lnmp.yml

  • hosts: webserver

    roles:

    • lnmp

6、运行playbook,并验证是否成功

[root@control ansible]# ansible-playbook lnmp.yml

# 控制节点上登录node节点
[root@control ansible]# ssh node3 # 查看/usr/local/nginx/目录下信息bin
[root@node3 ~]# ls /usr/local/nginx/ # 查看端口是否被监听
[root@node3 ~]# ss -nultp | grep 80 # 查看是否安装所需要包
[root@node3 ~]# rpm -q php-fpm # 查看php的状态
[root@node3 ~]# systemctl status php-fpm # 查看默认主页是否创建完成
[root@node3 ~]# cat /usr/local/nginx/html/index.html
Welcome to node3 on ['192.168.4.3']

7、使用nginx部署代理服务器node2

[root@control ansible]# ansible-galaxy init ~/ansible/roles/proxy
[root@control ansible]# cp ~/ansible/roles/lnmp/files/* ~/ansible/roles/proxy/files/

8、编写配置调度器的脚本,删掉之前的sed语句,添加定义集群,调用集群的语句

[root@control ansible]# vim ~/ansible/roles/proxy/files/install_nginx.sh
#!/bin/bash
conf="/usr/local/nginx/conf/nginx.conf"
yum -y install gcc pcre-devel openssl-devel make
cd /tmp/
tar -xf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure --with-http_ssl_module
make && make install
sed -i '/^http/a upstream webs {\n server 192.168.4.3;\n server 192.168.4.4;\n }\n'
$conf
sed -i '49i proxy_pass http://webs;' $conf
/usr/local/nginx/sbin/nginx

9、编写tasks文件,定义任务

[root@control ansible]# vim ~/ansible/roles/proxy/tasks/main.yml
---
# tasks file for /root/ansible/roles/proxy
- name: copy source file to node2
copy:
src: nginx-1.16.1.tar.gz
dest: /tmp/
- name: install nginx.
script: install_nginx.sh
args:
creates: /usr/local/nginx/sbin/nginx

10、编写playbook剧本,调用任务

[root@control ansible]# vim proxy.yml
---
- hosts: node2
roles:
- proxy
- hosts: node5
tasks:
- name: install mariadb server. #部署数据库服务器
yum:
name:
- mariadb
- mariadb-server
- mariadb-devel
- name: run mariadb-server
service:
name: mariadb
state: started

11、运行playbook和测试节点

[root@control ansible]# ansible-playbook proxy.yml
node1测试访问:
node2,node3,node4关闭防火墙,
[root@node2 ~]# systemctl stop firewalld.service 或者
firewall-cmd --add-service=http 允许http访问都可以
[root@node3 ~]# systemctl stop firewalld.service
[root@node4 ~]# systemctl stop firewalld.service
[root@node1 ~]# curl http://192.168.4.2 #成功

CentOS7-自动化部署web集群的更多相关文章

  1. Ansible自动化部署K8S集群

    Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...

  2. 在CentOS7上部署Kubernetes集群

    在CentOS7上部署Kubernetes集群 文/FCBusquest 2015-12-22 18:36:00 简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文 ...

  3. [自动化]基于kolla-ceph的自动化部署ceph集群

    kolla-ceph来源: 项目中的部分代码来自于kolla和kolla-ansible kolla-ceph的介绍: 1.镜像的构建很方便, 基于容器的方式部署,创建.删除方便 2.kolla-ce ...

  4. [自动化]基于kolla的自动化部署ceph集群

    kolla-ceph来源: 项目中的部分代码来自于kolla和kolla-ansible kolla-ceph的介绍: 1.镜像的构建很方便, 基于容器的方式部署,创建.删除方便 2.kolla-ce ...

  5. centos7下部署elasticSearch集群

    OS:Centos7x虚拟机 1H2Gjdk:1.8elasticsearch:5.6.0 单节点配置请参考:centos7下elasticSearch安装配置 配置master节点 # 在配置文件的 ...

  6. centos7.2 部署k8s集群

    一.背景 二.使用范围 ♦ 测试环境及实验环境 三.安装前说明 ♦ k8s网络基本概念 ♦  集群规划图 ♦ 软件版本选取 Name Version Description docker-ce 18. ...

  7. kettle在centos7下部署分布式集群

    首先安装三台centos7 ,分别配置好静态ip    ssh免密码登录     关闭防火墙 具体步骤这里不多说了 关于centos7配置静态ip大家可以参考:https://www.cnblogs. ...

  8. 在CentOS7上部署 Kubernetes集群

    yum -y install  etcd docker  flannel kubenetes 一般会遇到没有k8s源的问题,先 yum update -y 看是否有效,如果还是没用就创建yum 源,再 ...

  9. Redis笔记 -- 在 Centos7.4单机中部署Redis集群(二)

    0x00--背景和目的 在单台PC服务器上部署Redis集群,通过不同的TCP端口启动多实例,模拟多台独立PC组成集群. 0x01--环境描述: Centos版本:CentOS Linux relea ...

  10. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...

随机推荐

  1. go结构体打印格式化成json

    需要用到json.MarshalIndent 方法 官方的注释是: MarshalIndent类似于Marshal,但应用Indent来格式化输出. 输出中的每个JSON元素都将以一个新行开始,该新行 ...

  2. flask create_time update_time is_delete

    create_time = db.Column(db.DateTime, server_default=func.now()) update_time = db.Column(db.DateTime, ...

  3. sql 字符串末尾空格不占长度

    print len('qwer ');--4 print len('qwer                            ');--4 print len('qwer ' + 't');-- ...

  4. 连接打印机Lodop

    <div class="panel-body"> <div class="row show-grid"> <div class=& ...

  5. Matlab|fastica遇到的问题

    fastica 1 安装 FastICA 在matlab代码实现以及运行结果by阳光idol 安装步骤博主阳光idol已经写的很清楚了 FastICA 在matlab代码实现.运行结果及错误调试方法 ...

  6. springboot 日志处理

    引言 springboot框架集成logback日志 logback是由log4j创始人设计的又一个开源日志组件.目前,logback分为三个模块:logback-core,logback-class ...

  7. Unity学习笔记——坐标转换(1)

    1.Center与Pivot的区别 Pivot是模型坐标轴的真实位置,将辅助图标定位在网格的实际轴心点. Center是模型渲染边界的中心. 当包含子物体时,Pivaot模式辅助图标在物体的实际轴心点 ...

  8. 在LaTeX中使用BibTeX时的一个问题及其解决:编译PDF不随bib文件更新

    问题:更新bib文件之后,编译tex文件输出的PDF文件没有相应的更新. 原理: bbl文件才是引文的信息,bib文件只是用于生成bbl文件的一个"数据集"而已. 一般来说,LaT ...

  9. SSH、SFTP、FTP、Telnet、SCP、TFTP协议的原理

    一.SSH协议1.什么是SSH?SSH全称 安全外壳协议(Secure Shell),,是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境. 如果一个用户从本地计算机,使用SSH ...

  10. 关于Unity 图片队列存储以及出列导致内存溢出的解决方案

    图片虽然出列但是并没有销毁,所以..destroy !