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.70dns服务器,在dns服务器上将域名解析为两个虚地址,192.168.50.200192.168.50.201,使用dns轮询方式返回给客户端,达到负载分担的作用。
  • 出口路由器上有多个公网地址,192.168.50.17,虚地址192.168.50.200192.168.50.201,使用DNAT地址映射,把内网实际虚IP192.168.20.200192.168.20.201分别映射为192.168.50.200192.168.50.201
  • 路由器后端是LVS+keepalived的四层负载均衡,使用LVSDR模式,为达到两个LVS负载分担的,建立两组VRRP,两台LVS分别是两组虚IP地址192.168.20.200192.168.20.201MASTER节点,同时互为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)的更多相关文章

  1. Linux Web集群架构详细(亲测可用!!!)

    注意:WEB服务器和数据库需要分离,同时WEB服务器也需要编译安装MySQL. 做集群架构的重要思想就是找到主干,从主干区域向外延展. WEB服务器: apache nginx  本地做三个产品 de ...

  2. CentOS7-自动化部署web集群

    一.项目要求 1.创建role,通过role完成项目(可能需要多个role) 2.部署nginx调度器(node2主机) 3.部署2台lnmp服务器(node3,node4主机) 4.部署mariad ...

  3. Centos 7 部署lnmp集群架构

    前言介绍 lnmp的全程是 linux + nginx + mysql + php; lnmp就是上述系统及应用程序的简写组合: lnmp其实已经代表了一个用户正常对一个页面请求的流程,nginx接收 ...

  4. (二)Kubernetes kubeadm部署k8s集群

    kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...

  5. Ansible自动化部署K8S集群

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

  6. 003 ansible部署ceph集群

    介绍:在上一次的deploy部署ceph,虽然出了结果,最后的结果并没有满足最初的目的,现在尝试使用ansible部署一遍,看是否会有问题 一.环境准备 ceph1充当部署节点,ceph2,ceph3 ...

  7. 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 ...

  8. Haproxy配合Nginx搭建Web集群部署

    Haproxy配合Nginx搭建Web集群部署实验 1.Haproxy介绍 2.Haproxy搭建 Web 群集 1.Haproxy介绍: a)常见的Web集群调度器: 目前常见的Web集群调度器分为 ...

  9. 实战Centos系统部署Codis集群服务

    导读 Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可 ...

  10. kubernetes系列03—kubeadm安装部署K8S集群

    本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...

随机推荐

  1. 【Java】快速排序

    代码: 1 public static void quickSort(int[] arr) { 2 if (arr == null || arr.length < 2) { 3 return; ...

  2. 分析即服务(AaaS)是什么?终于有人讲清楚了

    随着世界数据领域的地位和规模的不断扩大,大数据.人工智能和云计算正在结合起来,以分析即服务的形式为企业提供急需的喘息机会 . 让我们简要回顾一下 2010 年以来发生的事情. 这十年来我们见证了许多技 ...

  3. Python生成唯一ID----UUID

    # UUID 生成唯一ID # uuid 是Python内置模块,主要有五种算法. import uuid # uuid1() 基于时间戳 a1 = uuid.uuid1() print('uuid1 ...

  4. 一键部署openGauss2.0.1 CentOS 7.6

    一键部署 openGauss2.0.1[CentOS 7.6] 本文档目的是为了帮助高校学生提供基于 CentOS7.6 操作系统,实现 openGauss 数据库一键式安装的脚本. 该脚本执行成功后 ...

  5. HarmonyOS 自定义页面请求与前端页面调试

      一.自定义页面请求响应 Web组件支持在应用拦截到页面请求后自定义响应请求能力.开发者通过onInterceptRequest()接口来实现自定义资源请求响应 .自定义请求能力可以用于开发者自定义 ...

  6. 安全工具分析系列-Londly01

    前言 原创作者:Super403,文章分析主要用于研究教学 本期研究:[Londly01-safety-tool]工具源码 简介:自动化资产探测及漏扫脚本 工具来源:https://github.co ...

  7. 史上最全的中高级JAVA工程师-面试题汇总

    史上最全的中高级JAVA工程师-面试题汇总 置顶 2019-10-15 18:58:32 Jeff.Smile 阅读数 34460更多 分类专栏: # 随笔 版权声明:本文为博主原创文章,遵循CC 4 ...

  8. maven 创建spring boot 需要的配置[一]

    前言 之所以写这个是因为现在官方推荐云创建: 所以标注一下maven project,创建后,如何导入spring boot. 正文 1.步骤一 在pom.xml 中加入: <dependenc ...

  9. aop 阶段性概况

    前言 对aop进行一个阶段性的总结. 正文 首先什么是aop呢? 那么首先看aop的解决什么样的问题. public class Program { public static void Main(s ...

  10. kkfileview搭建实战

    kkfileview可以与nginx搭建的文件服务器配合实现预览工作,也可以通过自身的文件系统机制免搭建nginx文件服务器来实现预览工作. nginx 创建nginx # 创建初始容器,获得容器内部 ...