ansible系列(31)--ansible实战之部署WEB集群架构(1)
1. WEB集群环境说明
WEB集群环境说明如下:
- 客户端:模拟外网主机,地址:192.168.50.1;
- DNS服务器:主机名:dns01;地址:ETH1:192.168.20.70;ETH2:192.168.50.70;
- 路由器:主机名:router;地址:ETH1:192.168.20.17;ETH2:192.168.50.17,192.168.50.200192.168.50.201;
- LVS+keepalived集群:
- 主机名:lvs01;地址:ETH1:192.168.20.31;
- 主机名:lvs02;地址:ETH1:192.168.20.32;
- 虚IP:192.168.20.200和192.168.20.201;
- LVS使用DR模式;
- nginx负载均衡集群:
- 主机名:lb01;地址:ETH1:192.168.20.19;
- 主机名:lb02;地址:ETH1:192.168.20.20;
- WEB集群:
- 主机名:web01;地址:ETH1:192.168.20.22;
- 主机名:web02;地址:ETH1:192.168.20.23;
- MySQL服务器:主机名:mysql01;地址:ETH1:192.168.20.50;
- redis服务器:主机名:redis01;地址:ETH1:192.168.20.61;
- NFS服务器:主机名:nfs01;地址:ETH1:192.168.20.30;

WEB集群访问步骤如下:
- 客户端访问网站
wordpress.xuzhichao.com,把DNS指向192.168.50.70的dns服务器,在dns服务器上将域名解析为两个虚地址,192.168.50.200和192.168.50.201,使用dns轮询方式返回给客户端,达到负载分担的作用。 - 出口路由器上有多个公网地址,
192.168.50.17,虚地址192.168.50.200和192.168.50.201,使用DNAT地址映射,把内网实际虚IP192.168.20.200和192.168.20.201分别映射为192.168.50.200和192.168.50.201。 - 路由器后端是
LVS+keepalived的四层负载均衡,使用LVS的DR模式,为达到两个LVS负载分担的,建立两组VRRP,两台LVS分别是两组虚IP地址192.168.20.200和192.168.20.201的MASTER节点,同时互为BACKUP节点。 LVS后端使用nginx负载均衡做7层负载均衡,因为nginx做负载均衡时会受到源端口号的限制,因此可以多部署几个nginx负载均衡,提升集群性能。LVS后端是WEB集群,使用nginx+PHP组成,nginx提供静态站点,PHP-fpm解析php代码。redis服务器用于解决WEB集群的缓存不一致问题,把会话缓存统一放置在redis服务器中。mysql独立部署,提供数据库功能,存放结构化数据。NFS服务器则为WEB集群提供共享存储,存放图片等资源,无论用户被调度到哪一台WEB节点,都可以访问相同的图片,视频等资源。
2. ansible部署WEB集群实现思路
ansible编排web集群的实现逻辑如下图,共分为三个阶段来实现:
基础环境模块:
基础环境模块采用一个单独的
role来编写,是应用于所有主机的基础功能,主要包括:- 基础软件安装;
yum仓库配置;- 关闭
firewalld防火墙,selinux; - 添加基础用户;
应用环境模块:
应用环境模块需要把可能使用到的每一个应用都以一个独立的
role来实现,仅实现软件的基础功能,例如安装,配置,启动等,以便于上层业务模块进行调用。应用模块要写的独立,全面,复用性好;
业务环境模块:
业务环境模块用以实现不同的业务或代码,例如
wordpress,zrlog等,业务模块的实现需要调用应用环境的模块组件,再配合相关业务的定制配置,例如nginx虚拟主机,数据库创建,代码部署(应该由Jenkins实现)等。

3. ansible基础环境部署
创建集群环境的目录,所有功能均在此目录下实现:
[root@xuzhichao ansible]# mkdir cluster-roles/
在
cluster-roles/目录下建立ansible的配置文件,并修改内容如下:[root@xuzhichao cluster-roles]# grep -v "^#" ansible.cfg | grep -v "^$"
[defaults]
inventory = /data/ansible/cluster-roles/hosts
gathering = smart
fact_caching_timeout = 86400
fact_caching = redis
fact_caching_connection = 127.0.0.1:6379
roles_path = /etc/ansible/roles:/data/ansible/roles:/opt
host_key_checking = False
private_role_vars = yes
定义本项目的
inventory主机清单文件:[root@xuzhichao cluster-roles]# cat hosts
[dns]
192.168.20.70 [lvs]
192.168.20.31
192.168.20.32 [webservers]
192.168.20.22
192.168.20.23 [lbservers]
192.168.20.19
192.168.20.20 [mysql]
192.168.20.50 [redis]
192.168.20.61 [nfs]
192.168.20.30
变量规划:整个集群环境的变量进行统一管理,统一放置在
group_vars/all文件中,所有role都可以调用。[root@xuzhichao cluster-roles]# ll group_vars/
total 0
-rw-r--r-- 1 root root 0 Aug 9 09:19 all
为所有主机设置
ssh秘钥登录,使用expect脚本实现:[root@xuzhichao cluster-roles]# yum install expect [root@xuzhichao cluster-roles]# cat auto_sshkey.sh
network=192.168.20
user=root
password=123456 for i in 19 20 22 23 30 31 32 50 61 70
do
/usr/bin/expect <<-EOF
set timeout 30
spawn ssh-copy-id $user@$network.$i
expect {
"yes/no" { send "yes\n"; exp_continue }
"password:" { send "${password}\n"; exp_continue }
}
expect eof
EOF
done [root@xuzhichao cluster-roles]# sh auto_sshkey.sh
测试所有被控主机能否正常使用
ansible管理:[root@xuzhichao cluster-roles]# ansible all -m ping
ansible系列(31)--ansible实战之部署WEB集群架构(1)的更多相关文章
- Linux Web集群架构详细(亲测可用!!!)
注意:WEB服务器和数据库需要分离,同时WEB服务器也需要编译安装MySQL. 做集群架构的重要思想就是找到主干,从主干区域向外延展. WEB服务器: apache nginx 本地做三个产品 de ...
- CentOS7-自动化部署web集群
一.项目要求 1.创建role,通过role完成项目(可能需要多个role) 2.部署nginx调度器(node2主机) 3.部署2台lnmp服务器(node3,node4主机) 4.部署mariad ...
- Centos 7 部署lnmp集群架构
前言介绍 lnmp的全程是 linux + nginx + mysql + php; lnmp就是上述系统及应用程序的简写组合: lnmp其实已经代表了一个用户正常对一个页面请求的流程,nginx接收 ...
- (二)Kubernetes kubeadm部署k8s集群
kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...
- Ansible自动化部署K8S集群
Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...
- 003 ansible部署ceph集群
介绍:在上一次的deploy部署ceph,虽然出了结果,最后的结果并没有满足最初的目的,现在尝试使用ansible部署一遍,看是否会有问题 一.环境准备 ceph1充当部署节点,ceph2,ceph3 ...
- ansible playbook部署ELK集群系统
一.介绍 总共4台机器,分别为 192.168.1.99 192.168.1.100 192.168.1.210 192.168.1.211 服务所在机器为: redis:192.168.1.211 ...
- Haproxy配合Nginx搭建Web集群部署
Haproxy配合Nginx搭建Web集群部署实验 1.Haproxy介绍 2.Haproxy搭建 Web 群集 1.Haproxy介绍: a)常见的Web集群调度器: 目前常见的Web集群调度器分为 ...
- 实战Centos系统部署Codis集群服务
导读 Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可 ...
- kubernetes系列03—kubeadm安装部署K8S集群
本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...
随机推荐
- C++设计模式 - 模板方法(Template Method)
组件协作模式: 现代软件专业分工之后的第一个结果是"框架与应用程序的划分","组件协作"模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用 ...
- 深入理解 C++ 右值引用和移动语义:全面解析
C++11引入了右值引用,它也是C++11最重要的新特性之一.原因在于它解决了C++的一大历史遗留问题,即消除了很多场景下的不必要的额外开销.即使你的代码中并不直接使用右值引用,也可以通过标准库,间接 ...
- CondeseNetV2:清华与华为出品,保持特征的新鲜是特征复用的关键 | CVPR 2021
论文提出SFR模块,直接重新激活一组浅层特征来提升其在后续层的复用效率,而且整个重激活模式可端到端学习.由于重激活的稀疏性,额外引入的计算量非常小.从实验结果来看,基于SFR模块提出的CondeseN ...
- mybatis复习(三)映射文件属性详解和动态SQL
mybatis映射文件属性详解和动态SQL笔记 <SELECT> id = "" 唯一标识parameterType = "" 表示传入SQL语句的 ...
- The First 寒假集训の小总结
转眼间十五天的寒假集训已经结束,也学习到了许多新知识,dp,线段树,单调栈和单调队列......,假期过得还是很有意义的,虽然我的两次考试成绩不尽人意(只能怪我自己没有好好理解知识点还有好好做题),但 ...
- c# .net缓存(旧)
前言 是迁移以前的blog. 关于c# 缓存在web应用中的一个引导,能够建立起一个缓存的基本思路. System.Web.Caching 这个真的是老生常谈了,我们只需要key和iv,然后我们就可以 ...
- IIS 出现405
前言 在一次配置服务器中,出现一个问题,那就是使用put和delete 出现405. 当时我蒙了,调试的时候好好的,部署405. 原因是put和delete是非简单请求,也就是说非安全请求了. 这时候 ...
- Consul的服务注册与发现(简单介绍)
Consul的注册中心的安装及配置 1.consul下载 2.开发模式启动consul consul agent -dev 3.验证测试 通过以下地址可以访问Consul的首页: http://loc ...
- kratos http原理
概念 kratos 为了使http协议的逻辑代码和grpc的逻辑代码使用同一份,选择了基于protobuf的IDL文件使用proto插件生成辅助代码的方式. protoc http插件的地址为:htt ...
- 将 Terraform 生态粘合到 Kubernetes 世界
简介: 为了更高效,统一的管理云服务,IaC 思想近年来盛行,其中 Terrafrom 更是成功得到了几乎所有的云厂商的采纳和支持.以 Terrafrom 模型为核心的云服务 IaC 生态已经形成.然 ...