美文网首页程序员
DC/OS 搭建/生产部署测试

DC/OS 搭建/生产部署测试

作者: xanderwang | 来源:发表于2018-11-30 06:13 被阅读0次

写在前面

容器相关技术有利于应用隔离与高效部署。以最广为人知的Docker开始,到来自Google的Kubernetes(k8s),以及Apache Mesos等,都是容器、微服务乃至云计算技术的当红代表。

其中,Apache Mesos作为来自UCB的云计算级别的分布式基础架构,从数据中心资源抽象、持久弹性扩展、工作负载调度等多个方面成为容器领域较为底层的技术(Spark最初也来自于Mesos)。Mesos可以在基础设施上提供弹性的应用服务,包括但不限于Docker容器编排、CI/CD、Spark、Kafka,甚至是运行Kubernetes。

对于开发者而言,Docker便能满足大部分应用开发和部署的需求;对于普通开发团队而言,为了提供专门用于Docker Container Orchestration(容器编排)与公有云融合的相关服务,Kubernetes则更为适合;对于需求较为复杂的开发团队或是企业来说,一个较可靠且能适应更多场景的分布式操作系统则更为友好。来自Mesosphere的DC/OS(The Datacenter Operating System)便可以看作Mesos的绝佳发行版。

DC/OS 组件

目前笔者负责管理的实验室主要面临传统裸机虚拟化(VMware vSphere)带来的诸多瓶颈,例如资源利用率低、实例迁移困难、平台部署过于耗时、服务不够灵活等。通过在裸机虚拟化基础上构建DC/OS,希望能改善现状。

下面对DC/OS 1.12开源版本做快速的生产部署测试,内容仅供参考。更多内容请参考官方文档:
https://docs.mesosphere.com/1.12/installing/production/

测试平台

  • 三台虚拟机,OS均使用CentOS 7(官方仅提供CentOS/RHEL之文档支持)。配置如下:
角色 主机名 配置 IP地址
Bootstrap dcos-bootstrap 2c, 10GB, 60GB 192.168.83.59
Master dcos-master 24c 32GB 180GB 192.168.83.60
Agent dcos-agent 24c 16GB 180GB 192.168.83.61

*其中Bootstrap主要负责安装和升级,性能无需过高

  • 官方建议配置如下:
    • Bootstrap: 2c, 16GB, 60GB
    • Master: 最低1个, 4c, 32GB, 120GB; 推荐3-5个, 4c, 32GB, 120GB(SSD或RAID更佳)
    • Agent: 最低1个, 2c, 16GB, 60GB; 推荐6+个, 2c, 16GB, 60GB
  • 各角色示意图: 角色示意图

过程概览

  • 准备工作
    • 配置与创建虚拟机实例(略)
    • 所有实例上执行
      • 关闭防火墙并禁止开机启动
      • 关闭SELINUX
      • hosts设置
    • 所有实例上安装软件
      • Docker
      • NTP
      • ifconfig (net-tools)
    • Bootstrap实例上执行
      • 下载官方安装脚本
      • 安装Nginx (Docker)
    • Master与Agent实例上执行
      • 安装解压缩工具
      • 添加nogroup docker用户组
      • 区域语言设置
      • 重启
  • 安装过程
    • Bootstrap实例上执行
      • 创建配置目录与IP检测脚本
      • 定义安装配置文件
      • 执行安装脚本
      • 启动Nginx镜像
    • Master实例上执行
      • 新建安装临时目录
      • 从Bootstrap实例中下载安装脚本
      • 执行安装脚本
    • Agent实例上执行
      • 新建安装临时目录
      • 从Bootstrap实例中下载安装脚本
      • 执行安装脚本
  • 后续过程
    • 检查分布式状态
    • 进入DC/OS控制台
    • 其他可选配置项

详细过程

  • 准备工作
    • 配置与创建虚拟机实例(略)
      注意主机名尽量使用小写且与后续hosts对应;
      因为当前版本尚且不支持回滚卸载:

      To remove DC/OS, you must completely reimage the operating system on your nodes. Uninstalling will be supported in future releases. For more information, see DCOS_OSS-250 and DCOS_OSS-192.

      为了避免因安装失败造成麻烦,建议在各实例上执行安装脚本前创建各实例的快照。(创建快照需要额外硬盘空间,请酌情预留)
      如果因故还原快照后,请先重启虚拟机并确保NTP已同步并再试。

    • 所有实例上执行

      • 关闭防火墙和DNSmasq并禁止开机启动
        sudo systemctl stop firewalld && sudo systemctl disable firewalld
        sudo systemctl stop dnsmasq && sudo systemctl disable dnsmasq.service
        
      • 关闭SELINUX
        配置文件中enforcing改为disabled
        vim /etc/selinux/config
        
      • hosts设置
        vim /etc/hosts
        
        按照如下格式。
        192.168.83.59 dcos-bootstrap.idc.com dcos-bootstrap
        192.168.83.60 dcos-master.idc.com dcos-master
        192.168.83.61 dcos-agent.idc.com docs-agent
        
    • 所有实例上安装软件

      • Docker
        官方声明新版本的Docker存在稳定性问题。建议安装CentOS内置源中的1.13版本Docker。

        A recently discovered bug in Docker 17.x’s handling of cgroups kernel memory controller (kmem) causes instability for the entire system when the kmem accounting feature is activated. Customers may notice tasks or commands getting stuck indefinitely and kernel-related error messages in the system logs. Mesosphere DC/OS customers and community members who utilize RedHat or CentOS as their base operating systems are strongly advised to install and use RedHat’s fork of Docker 1.13. This fork of Docker does not require an RHN subscription.

        sudo yum remove docker-ce # 若安装了新版本,予以删除
        sudo yum -y install docker
        sudo systemctl start docker && systemctl enable docker
        
      • NTP

        生产环境建议搭建本地NTP校时服务器,此处略过。

        sudo yum -y install ntp
        

        修改配置文件,添加时间服务器。

        sudo vim /etc/ntp.conf
        
        ...
        server time1.aliyun.com # 删除原有项。若有本地NTP服务器,此处写本地NTP服务器地址
        ...
        

        检查是否已同步远程服务器,设置开机启动。

        sudo systemctl start ntpd
        nptstat
        sudo systemctl enable ntpd
        
      • ifconfig (net-tools)

        sudo yum -y install net-tools
        
    • Bootstrap实例上执行

      • 下载官方安装脚本
        cd ~
        wget https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh
        
      • 安装Nginx (Docker)
        sudo docker pull nginx
        
    • Master与Agent实例上执行

      • 安装解压缩工具
        sudo yum install -y tar xz unzip curl ipset
        
      • 添加nogroup docker用户组
        sudo groupadd nogroup && sudo groupadd docker
        
      • 区域语言设置
        localectl set-locale LANG=en_US.utf8
        
      • 重启
        sudo reboot 0
        
  • 安装过程
    • Bootstrap实例上执行
      • 创建配置目录与IP检测脚本

        mkdir -p genconf
        cd genconf
        vim ip-detect
        

        脚本内容如下,(注意右边)注意修改实际网卡名。

        #!/usr/bin/env bash
        set -o nounset -o errexit
        export PATH=/usr/sbin:/usr/bin:$PATH
        echo $(ip addr show eth0 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
        
      • 定义安装配置文件
        创建配置文件。

        vim config.yaml
        

        下面是官方开源版配置模版(笔者添加了agent_list),按需增删改即可。(相对路径指的是相对于安装脚本IP检测脚本的位置)
        更多详见:https://docs.mesosphere.com/1.12/installing/production/deploying-dcos/configuration/examples/

        bootstrap_url: http://<bootstrap_ip>:80
        cluster_name: <cluster-name>
        exhibitor_storage_backend: static
        master_discovery: static
        ip_detect_public_filename: <relative-path-to-ip-script>
        master_list:
        - <master-private-ip-1>
        - <master-private-ip-2>
        - <master-private-ip-3>
        agent_list:
        - <agent-private-ip-1>
        - <agent-private-ip-2>
        - <agent-private-ip-3>
        resolvers:
        - 169.254.169.253
        use_proxy: 'true'
        http_proxy: http://<user>:<pass>@<proxy_host>:<http_proxy_port>
        https_proxy: https://<user>:<pass>@<proxy_host>:<https_proxy_port>
        no_proxy:
        - 'foo.bar.com'
        - '.baz.com'
        

        另外官方也有对ipv6配置项的说明,我们添加enable_ipv6项并设置其为false即可。

        NOTE: Due to a cluster configuration issue with overlay networks, we recommend setting enable_ipv6 to false in config.yaml when upgrading or configuring a new cluster. If you have already upgraded to DC/OS 1.12.x without configuring enable_ipv6 or if config.yaml file is set to true, then do not add new nodes.

      • 执行安装脚本
        记得创建实例快照!执行如下命令:

        cd ..
        sudo bash dcos_generate_config.sh
        
      • 启动Nginx镜像
        替换<your-port>为Bootstrap实例对外端口。

        sudo docker run -d -p <your-port>:80 -v $PWD/genconf/serve:/usr/share/nginx/html:ro nginx
        
    • Master实例上执行
      • 新建安装临时目录
        mkdir /tmp/dcos && cd /tmp/dcos
        
      • 从Bootstrap实例(的Docker镜像中)下载安装脚本
        替换相应值为Bootstrap实例IP和端口
        curl -O http://<bootstrap-ip>:<your_port>/dcos_install.sh
        
      • 执行安装脚本
        记得创建实例快照!执行如下命令:
        sudo bash dcos_install.sh master
        
    • Agent实例上执行
      • 新建安装临时目录
        mkdir /tmp/dcos && cd /tmp/dcos
        
      • 从Bootstrap实例中下载安装脚本
        替换相应值为Bootstrap实例IP和端口
        curl -O http://<bootstrap-ip>:<your_port>/dcos_install.sh
        
      • 执行安装脚本
        记得创建实例快照!执行如下命令:
        sudo bash dcos_install.sh slave_public
        
        注意此处的slave_public参数表示采用公共agent模式安装。与私有相比主要差在是否允许集群外访问。若需设置为私有则可使用slave参数
  • 后续过程
    • 检查分布式状态
      浏览器访问http://<master-ip>:8181/exhibitor/v1/ui/index.html,检查各Master实例是否完成安装(绿色即完成)。
      ZooKeeper Exhibitor
    • 进入DC/OS控制台
      浏览器访问Master实例的IP,便可进入控制台。


      DC/OS Login

      登陆后,可进入仪表盘。


      DC/OS Dashboard
      Agent节点也已被识别了。
      DS/OS Nodes
    • 其他可选配置项
      请参考官方文档。

相关文章

  • DC/OS 搭建/生产部署测试

    写在前面 容器相关技术有利于应用隔离与高效部署。以最广为人知的Docker开始,到来自Google的Kuberne...

  • DC/OS 快速部署

    mydcos DC/OS 部署 项目下载 git clone https://github.com/Tsui89/...

  • DC/OS部署前准备

    1. 硬件环境准备 2. 系统环境准备(所有节点上操作) 关闭SELINUX 关闭防火墙 更新系统到最新版本 启用...

  • DC/OS高级安装

    开始前完成DC/OS部署前准备链接: https://www.jianshu.com/p/38bcc98258fb...

  • Hadoop+Zookeeper+Hbase高可用集群搭建

    简介 在工作中,生产环境和测试环境各搭建了一套Hadoop HA集群且运行稳定,以下为测试环境的详细部署流程以及在...

  • mac web 服务

    我们经常性的需要使用局域网搭建 Web 服务器测试环境,如部署局域网无线安装企业应用等,Mac OS X 自带了 ...

  • Mac OS X 启用 Web 服务器

    我们经常性的需要使用局域网搭建 Web 服务器测试环境,如部署局域网无线安装企业应用等,Mac OS X 自带了 ...

  • 安装部署

    1、测试环境搭建 IIS环境搭建 等待安装IIS 网站部署 数据库搭建 2、开发环境搭建 安装IIS(如上IIS环...

  • Vue-CLI 3.x 自动部署项目至服务器

    前言 平时部署前端项目流程是:先部署到测试环境ok后再发布到生产环境上,部署到测试环境用 xshell 连上服务器...

  • HBase生产环境部署指南

    最近集群要迁移,本来想在网上找到个相对完整的HBase生产环境部署教程来参考一下,无奈,网上基本上都是教你搭建测试...

网友评论

    本文标题:DC/OS 搭建/生产部署测试

    本文链接:https://www.haomeiwen.com/subject/grnqcqtx.html