学习 SUSE Storage 系列文章

(1)SUSE Storage6 实验环境搭建详细步骤 - Win10 + VMware WorkStation

(2)SUSE Linux Enterprise 15 SP1 系统安装

(3)SUSE Ceph 快速部署 - Storage6

(4)SUSE Ceph 增加节点、减少节点、 删除OSD磁盘等操作 - Storage6

(5)深入理解 DeepSea 和 Salt 部署工具 - Storage6


首先我们通过前几篇文章,已经搭建了一套完整的Ceph集群,对使用salt工具自动化搭建集群有所了解,下面我们就对部署方式进行详解

SUSE Enterprise Storage 部署方式

storage4 采用的方式:

  • ceph-deploy 工具,标准的ceph脚本部署,适用于中小型存储集群
  • crowbar工具,部署SUSE Openstack的标准工具

storage5/6 采用方式:

  • DeepSea (Salt),轻量级,敏捷性,灵活性,弹性部署

过去我们的部署方式采用社区的方式ceph-deploy或 crowbar 工具搭建,这2种工具部署都有一定局限性,不适合大型存储集群部署,敏捷性、灵活性太差。因此从2018年开始,SUSE Enterprise Storage 5 弃用 ceph-deploy / crowbar 群集部署工具 ,推出DeepSea方式进行部署,该方式更加轻量级,高速互通,敏捷性,灵活性,适用于各种场景部署集群系统,也是Ceph产品部署方式的趋势。

一、DeepSea 简介

DeepSea 旨在节省管理员的时间,让他们自信地对 Ceph 群集执行复杂操作。Ceph 是一款高度可配置的软件解决方案。它提高了系统管理员的自由度和职责履行能力。最低的 Ceph 设置能够很好地满足演示目的,但无法展示 Ceph 在处理大量节点时可体现的卓越功能。DeepSea 会收集并储存有关单台服务器的相关数据,例如地址和设备名称。对于诸如 Ceph 的分布式储存系统,可能需要收集并储存数百个这样的项目。收集信息并手动将数据输入到配置管理工具的过程非常耗费精力,并且容易出错。准备服务器、收集配置信息以及配置和部署 Ceph 所需执行的步骤大致相同。但是,这种做法无法解决管理独立功能的需求。在日常操作中,必须做到不厌其烦地将硬件添加到给定的功能,以及从容地去除硬件。DeepSea 通过以下策略解决了这些需求:DeepSea 可将管理员的多项决策合并到单个文件中。这些决策包括群集指派、角色指派和配置文件指派。此外,DeepSea 会收集各组任务以组成一个简单的目标。每个目标就是一个阶段:

关于DeepSea官方资料:

GitHub 链接: https://github.com/SUSE/DeepSea/wiki

二、SaltStack 简介

SaltStack 是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func。SaltStack 基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、 python-msgpack和PyYAML等)构建。

通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

特性:

(1)部署简单、方便;

(2)支持大部分UNIX/Linux及Windows环境;

(3)主从集中化管理;

(4)配置简单、功能强大、扩展性强;

(5)主控端(master)和被控端(minion)基于证书认证,安全可靠;

(6)支持API及自定义模块,可通过Python轻松扩展。

SaltStack: Pillar 和 Grains 详解

SatlStack 远程执行

1、远程执行

  • 目标 (Targeting)
  • 模块 (Module)
  • 返回 (return)

2、目标

(1)和Minion ID 有关,需要使用Minion ID

  • 通配符
  • 正则表达式
  • 列表

通配符方式:

# salt 'node00[1-3]'.example.com cmd.run 'w'
node002.example.com:
:: up :, users, load average: 0.28, 0.09, 0.02
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
node001.example.com:
:: up :, users, load average: 0.23, 0.13, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
node003.example.com:
:: up :, users, load average: 0.24, 0.09, 0.02
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

正则表达式

# salt -E 'node(001|002).example.com' test.ping
node002.example.com:
True
node001.example.com:
True

(2)和Minion ID 无关,不涉及到Minion ID

  • 子网 /  IP 地址
  • Grains
  • Pillar
  • Compound matchers (复合匹配)
  • Node groups (节点组)
  • Batching execution (批处理执行)

Grains 方式,OS是SUSE

# salt -G 'os:SUSE' test.ping
node001.example.com:
True
node002.example.com:
True
node003.example.com:
True
node004.example.com:
True
admin.example.com:
True

获取 Pillar ,然后指定pillar方式

# salt 'admin*' pillar.items
admin.example.com:
----------
available_roles:
- storage
- admin
- mon
- mds
- mgr .....     roles:
        - master
        - admin
        - prometheus
        - grafana
    time_server:
        admin.example.com # salt -I 'roles:grafana' test.ping             
admin.example.com:
    True

3、模块详解

1000+ 的模块,目前在不断增加中 , saltstack模块链接

admin:~ # salt 'node001*' network.arp
node001.example.com:
----------
:0c::::2d:
192.168.2.42
:0c:::::
192.168.3.42
:0c::ae:::
172.200.50.39
:0c::ae::5b:
192.168.2.39
:0c::d3:ba::
192.168.2.41
:0c::d3:ba:1f:
192.168.3.41
:0c::e0:5c:8c:
192.168.2.43
:0c::e0:5c::
192.168.3.43
admin:~ # salt 'node001*' network.interface eth1
node001.example.com:
|_
----------
address:
192.168.2.40
broadcast:
192.168.2.255
label:
eth1
netmask:
255.255.255.0

三、配置和自定义

policy.cfg 文件

/srv/pillar/ceph/proposals/policy.cfg 配置文件用于确定单个群集节点的角色。例如,哪个节点充当 OSD,或哪个节点充当监视器节点。请编辑 policy.cfg ,以反映所需的群集设置。段落采用任意顺序,但所包含行的内容将重写前面行的内容中匹配的密钥。

1、policy.cfg 的模板

  • 可以在 /usr/share/doc/packages/deepsea/examples/ 目录中找到完整策略文件的多个示例。
  • 一般我们选择基于角色定义的模板
# ll /usr/share/doc/packages/deepsea/examples/
total
-rw-r--r-- root root Aug : policy.cfg-generic
-rw-r--r-- root root Aug : policy.cfg-regex
-rw-r--r-- root root Aug : policy.cfg-rolebased

2、群集指派

要包含所有受控端,请添加以下几行:

cluster-ceph/cluster/*.sls

要将特定的受控端加入白名单,请运行以下命令:

cluster-ceph/cluster/abc.domain.sls

要将一组受控端加入白名单,可以使用通配符:

cluster-ceph/cluster/mon*.sls

要将受控端加入黑名单,可将其设置为 unassigned :

cluster-unassigned/cluster/client*.sls 

3、policy.cfg 示例

下面是一个基本 policy.cfg 文件的示例:

 vim /srv/pillar/ceph/proposals/policy.cfg 

 ## Cluster Assignment
cluster-ceph/cluster/*.sls ## Roles
# ADMIN
role-master/cluster/admin*.sls
role-admin/cluster/admin*.sls # Monitoring
role-prometheus/cluster/admin*.sls
role-grafana/cluster/admin*.sls # MON
role-mon/cluster/node00[1-3]*.sls # MGR (mgrs are usually colocated with mons)
role-mgr/cluster/node00[1-3]*.sls # COMMON
config/stack/default/global.yml
config/stack/default/ceph/cluster.yml # Storage
role-storage/cluster/node00*.sls # MDS
role-mds/cluster/node001*.sls # IGW
role-igw/stack/default/ceph/minions/node002*.yml
role-igw/cluster/node002*.sls # RGW
role-rgw/cluster/node00[3-4]*.sls

(1)第3-4行:

  • 指示在 Ceph 群集中包含所有受控端。如果您不想在 Ceph 群集中包含某些受控端,请使用:
cluster-unassigned/cluster/*.sls
cluster-ceph/cluster/node00*.sls
  • 将所有受控端标记为未指派。
  • 覆盖与“node00*.sls”匹配的受控端,并将其指派到 Ceph 群集。

(2)第7-9行

  • 指定主机名为admin的主机节点具有"master" 和 “admin” 角色

(3)第11-13行

  • 指定要部署 Dashboard 可视化界面的节点

(4)第15-16行

  • 将受控节点 node001 node002 node003 设置为MON 节点

(5)第18-19

  • 将受控节点 node001 node002 node003 设置为 MGR 节点 ,该设置必须跟随 MON 设置一样

(6)第21-23行

  • 表示接受 fsid 和 public_network 等通用配置参数的默认值

(7)第25-36行

  • 受控端 “node00*” 将具有 storage  IGW RGW MDS 角色

四、DeepSea 部署方式

通过架构图,我们可以清楚的了解到,安装 Storage6 时只要管理节点安装 satl-master 和 salt-minion,其他OSD节点安装 salt-minion,并且所有的 minion 都指向salt-master IP地址或主机名(推荐使用public网段地址),然后执行deepsea 的4个阶段命令 “salt-run state.orch ceph.stage.X” 就可以轻松的搭建完成。

DeepSea阶段说明

阶段 0 — 准备:在此阶段,将应用全部所需的更新,并且可能会重引导您的系统。

阶段 1 — 发现:在此阶段,通过Salt在客户端安装的salt minion, 将检测群集中的所有硬件, 并收集 Ceph 配置所需的信息。

阶段 2 — 配置:您需要以特定的格式准备配置数据。(定义 salt 的pillar)

阶段 3 — 部署:创建包含必要 Ceph 服务的基本 Ceph 群集。有关必要服务的列表

阶段 4 — 服务:可在此阶段安装 Ceph 的其他功能,例如 iSCSI、RADOS 网关和CephFS。其中每个功能都是可选的。

阶段 5 — 去除阶段:此阶段不是必需的,在初始设置期间,通常不需要此阶段。在此阶段,将会去除受控端的角色以及群集配置。如果您需要从群集中去除某个储存节点,则需要运行此阶段.

DeepSea CLI

DeepSea 还提供了一个 CLI 工具,供用户监视或运行阶段,同时实时将执行进度可视化。支持使用以下两种模式来可视化阶段的执行进度:

  • 监视模式:可视化另一个终端会话中发出的 salt-run 命令所触发 DeepSea 阶段的执行进度。
  • 独立模式:运行 DeepSea 阶段,并在该阶段的构成步骤执行时提供相应的实时可视化效果。

监控模式 Monitor Mode

该程序监控提供一个详细的,实时的可视化操作行为,当在执行运行salt-run state.orch时,监控执行期间运行了什么

# deepsea monitor

独立模式 Stand-alone Mode

# deepsea stage run stage-name
# salt-run state.orch ceph.stage.
# deepsea stage run ceph.stage.

Deepsea帮助信息

# man deepsea-monitor
NAME
deepsea-monitor - Starts the DeepSea stage execution progress monitor.
# man deepsea-stage run

深入理解 DeepSea 和 Salt 部署工具 - Storage6的更多相关文章

  1. Capsule:开源的 JVM 应用部署工具

    [编者按]本文作者 Ron Pressler 是 Parallel Universe 公司的创始人,拥有着丰富的高性能开发经验.通过这篇文章,Ron 向大家详细介绍了全新的开源 JVM 部署工具--C ...

  2. Openstack部署工具

    Openstack发展很猛,很多朋友都很认同,2013年,会很好的解决OpenStack部署的问题,让安装,配置变得更加简单易用. 很多公司都投入人力去做这个,新浪也计划做一个Openstack的is ...

  3. openstack部署工具简介

    个人使用方面DevStack无疑,在可预见的未来时间内,DevStack仍将是众多开发者们的首选安装方式或工具.该方式主要是通过配置参数,执行shell脚本来安装一个OpenStack的开发环境.Gi ...

  4. 云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

    @ 目录 概述 定义 工作原理 主要组件 核心概念 环境准备 概述 安装Kubekey 创建K8S 安装K9S OpenLB 安装ArgoCD 安装 ArgoCD CLI 从Git库中创建一个应用程序 ...

  5. OpenStack部署工具总结

    目前感觉比较简单直观的部署工具有RDO.devstack.Fuel等: 1. RDO https://openstack.redhat.com/Quickstart REDHAT出品,支持Redhat ...

  6. Capistrano初探--Ruby快速部署工具

    1.Capistrano介绍 是什么?---一种部署工具.(部署就是在生产服务器上安装应用程序,或是更新最新版本:web服务器的启动重启与停止:使网站进入维护状态或将其恢复为常态) 在进行 Rails ...

  7. seajs打包部署工具spm的使用总结

    相信使用seajs的好处大家都是知道的,接触seajs好像是在半年前,当时还不知道页面阻塞问题,这里不带多余的话了. seajs实现了模块化的开发,一个网站如果分了很多很多模块的话,等开发完成了,发现 ...

  8. NodeJS热部署工具 — supervisor

    NodeJS热部署工具 — supervisor 大家都在开发nodejs应用时遇到过这样的情况,修改nodejs应用中的程序文件后必须重启nodejs才能重新加载应用代码.这是因为nodejs加载过 ...

  9. 阿里云运维部署工具AppDeploy详细教程

    AppDeploy是一个通过SSH实现的命令行工具,可完成应用部署和远程运维管理.当前工具实现为两个版本:普通版(伪代码描述语言)和Python版.Python版使用Python语法规则,可实现您的各 ...

随机推荐

  1. docker运行原理与使用总结

    docker运行原理概述 Client-Server架构 docker守护进程运行在宿主机上systemctl start docker daemon进程通过socket从客户端(docker命令)接 ...

  2. fiddler的安装于使用(一)安装fiddler

    Fiddler的简介 Fiddler是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一 .它能够记录客户端和服务器之间的所有 请求,可以针对特定的请求,分析请求数据.设置断点.调试web应 ...

  3. HDU 1848 Fibonacci again and again SG函数做博弈

    传送门 题意: 有三堆石子,双方轮流从某堆石子中去f个石子,直到不能取,问先手是否必胜,其中f为斐波那契数. 思路: 利用SG函数求解即可. /* * @Author: chenkexing * @D ...

  4. codeforces 876 F. High Cry(思维)

    题目链接:http://codeforces.com/contest/876/problem/F 题解:一道简单的思维题,知道最多一共有n*(n+1)/2种组合,不用直接找答案直接用总的组合数减去不符 ...

  5. CF1007B Pave the Parallelepiped 容斥原理

    Pave the Parallelepiped time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  6. 字符编码与gcc 编译器的编码问题

    最近在 vscode 中借助 gcc 编译器来配置 c 语言开发环境时,发现中文编码存在乱码问题.再加上最近学习到多字节字符与宽字符,搅在一起,搞得很乱,就把自己的理解写下来,供有需者参考吧. 1. ...

  7. 题解 UVA11000 【Bee】

    传送门 [题目描述] 在非洲有一种非常特殊的蜜蜂.每年,这种蜜蜂的一只雌蜂生育一只 雄蜂,而一只雄蜂生育一只雌蜂和一只雄蜂,生育后它们都会死去!现在科学家们意外地发现了这一特殊物种的一只神奇的雌蜂,她 ...

  8. HDFS 读写流程-英

    HDFS 文件读取流程 The client opens the file it wishes to read by calling open() on the FileSystem object, ...

  9. 【Linux】一些常用命令(待整理)

    一.关机重启命令 二.查询ip 三.查询杀死进程 四.CentOS7 关闭防火墙 五.vim常用 5.1 搜索 5.2 设置行号 剪切 替换 一.关机重启命令 shutdown -h 10 #计算机将 ...

  10. 手工释放服务器的swap分区缓存

    时间     恢复时间 状态 信息 主机 问题 • 严重性 持续时间 确认 动作 2019-03-21 20:29:30     09:51:30     -ai-代理 Lack of free sw ...