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 ...
随机推荐
- 高德地图和echarts结合实现地图下钻(二)
一.学习ajax发送异步请求 1 $(function(){ 2 //请求参数 3 var list = {}; 4 // 5 $.ajax({ 6 //请求方式 7 type : "POS ...
- ET介绍——分布式Actor模型
Actor模型 Actor介绍 在讨论Actor模型之前先要讨论下ET的架构,游戏服务器为了利用多核一般有两种架构,单线程多进程跟单进程多线程架构.两种架构本质上其实区别不大,因为游戏逻辑开发都需要用 ...
- ES6中模块化详解
前言 因为ES6中的模块化是将来,所以就必须有必要好好的了解一下,学习一下,这篇文章就简单总结一下ES6中模块的概念,语法和用法.纯属个人总结,不喜勿喷. 下面我将通过a.js.b.js和c.js三个 ...
- 4步成功将三方库——speexdsp移植到OpenHarmony
战码先锋,PR征集令(以下简称"战码先锋")第二期正如火如荼地进行中,涉及OpenAtom OpenHarmony(以下简称"OpenHarmony")主干仓 ...
- OpenHarmony技术挑战课题征集
OpenHarmony技术挑战课题征集 OpenAtom OpenHarmony(以下简称"OpenHarmony")是由开放原子开源基金会(OpenAtom Foundation ...
- Qt 实现涂鸦板三:实现鼠标绘制矩形
.h 文件 #pragma once #include <QtWidgets/QWidget> #include "ui_xuexi.h" #include " ...
- 超强阵容!HarmonyOS极客马拉松2023专家评审团来袭!
数十位重量级专家现身决赛现场,为参赛者提供多角度专业点评.12支队伍,46位选手,齐聚东莞·松山湖,围绕HarmonyOS技术特性,共同挑战36小时极限编程,谁将问鼎决赛之巅,8.3日-5日,我们拭 ...
- 批处理 if的知识点
正文 批处理的if不同于我们在一些常规语言中的if,比如说c或者c# 或者 java等. 如果我们判断两个字符是否相等,我们使用 'a'=='a' 来判断. 但是如果是不相等却不能这样. gtr 大于 ...
- 堡垒机安装pytorch,mmcv,mmclassification,并训练自己的数据集
堡垒机创建conda环境,并激活进入环境 conda create -n mmclassification python=3.7 conda activate mmclassification 堡垒机 ...
- 架构设计|基于 raft-listener 实现实时同步的主备集群
背景以及需求 线上业务对数据库可用性可靠性要求较高,要求需要有双 AZ 的主备容灾机制. 主备集群要求数据和 schema 信息实时同步,数据同步平均时延要求在 1s 之内,p99 要求在 2s 之内 ...