暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用SaltStack自动化配置MongoDB

原创 Onyancha Brian Henry 2019-12-02
1525

添加新资源或进行更改时,随着时间的推移,用于多个服务器的数据库部署变得更加复杂且耗时。此外,每当手动配置系统时,人为错误就有可能导致灾难性后果。

数据库部署自动化工具将使我们能够在从开发到生产环境的多台服务器之间部署数据库。除了提供节点的当前状态信息之外,自动部署的结果是可靠,更有效和可预测的,可进一步用于计划需要添加到服务器的资源。通过良好管理的部署,开发团队和运营团队的生产力均得到提高,从而使业务发展更快,完成更多工作,并且由于易于频繁部署,最终用户的总体软件设置将更好,运行可靠。

MongoDB可以手动部署,但是当您必须配置包含在不同服务器上的许多成员的集群时,任务变得越来越繁琐。因此,我们需要下决心使用一种可以减轻压力的工具。

使用任何工具部署MongoDB都有以下几个主要好处:

1.节省时间。
想象一下,您的数据库有50个节点,您需要为每个节点更新MongoDB版本。这将花费您很多时间来完成该过程。但是,使用自动工具,您只需要编写一些说明并发出命令即可为您完成其余的更新。这样,开发人员将有时间去开发新功能,而不是修复手动部署。

2.减少错误,从而提高客户满意度。
进行新的更新可能会给数据库系统带来错误,尤其是在必须手动完成配置的情况下。使用SaltStack之类的工具,消除了手动步骤可以减少人为错误,并且频繁更新新功能将满足客户需求,从而保持组织的竞争力。

3.降低配置成本。
使用部署工具,任何人都可以自己部署,因为该过程本身将变得更加容易。这将消除专家的工作量并减少错误

什么是SaltStack
SaltStack是使用Python开发的开源远程执行工具和配置管理系统。

远程执行功能用于在各种计算机上与灵活的目标系统并行运行命令。例如,如果您有3台服务器计算机,并且要为每台服务器安装MongoDB,则可以从主节点同时在这些计算机上运行安装命令。

在配置管理方面,建立了客户端-服务器接口以简化基础结构组件并将其安全地转换为所需状态。

SaltStack架构
SaltStack的基本设置模型是客户端服务器,其中服务器可以称为主服务器,客户端可以称为从服务器。主机发出命令或指令作为控制系统,需要由作为受控系统的客户/小伙伴执行。

image.png

SaltSack组件
以下是SaltStack的组成
1.主站:负责向从站发布指令,并在执行后将其更改为所需状态。

2.Minion:这是受控系统,需要转换为某些所需状态。

3.Salt Grains:这是有关奴才的静态数据或元数据,它构成诸如型号,序列号,内存容量和操作系统之类的信息。当奴才首次连接到服务器时,将收集它们。它们可以用于针对某个方面的某些小兵目标。例如,您可以运行一条命令,为所有装有Windows操作系统的计算机安装MongoDB。

4.Èxecution模块/指令:这些是特设的命令发出到一个或多个目标的爪牙和命令行被执行。

5.Pillars:是用户定义的变量,分布在各小部之间。它们用于:小配置,高度敏感的数据,任意数据和变量。并非所有支柱都可以使用所有支柱,因此可以限制哪些支柱适用于某一组奴才。

6.State files。这是盐状态系统(SLS)的核心,它表示系统应处于的状态。在Ansible的情况下,考虑到它们也是YAML格式,它等效于剧本。

#/srv/salt/mongodbInstall.sls (file root)
 
install_mongodb: (task id)
 
pkg.installed: (state declaration)
 
-name:mongodb  (name of package to install)

7.Top file:用于映射一组计算机并定义应应用的状态文件。即

#/srv/salt/top.sls
 
  base:
 
   ‘minion1’:
 
     -mongodb

8.Salt Proxy:此功能使控制无法运行标准盐矿的设备成为可能。它们包括具有运行在专有OS上的API的网络设备,具有CPU和内存限制的设备,或者由于安全原因而无法运行奴才的设备。必须将Junos代理用于这些设备的发现,控制,远程执行和状态管理。

SaltStack安装
我们可以使用pip命令将SaltStack安装为

$ pip install salt

要确认安装,请运行命令 $ salt --version,您应该得到诸如salt 2019.2.2(Fluorine)之类的信息

在连接到主机之前,minion将要求主机ip地址和minion id的最低配置,以便主机将其用作参考。这些配置可以在文件/ etc / salt / minion中完成。

然后,我们可以在守护程序或调试模式下的各种模式下运行master。对于守护程序,您将具有 $ salt-master -d;对于调试模式, 将具有$ salt-master -l debug。您需要通过运行$ salt-key -a nameOfMinion来启动小仆的密钥。要列出可用的密钥,请运行$ salt-key -l

对于小兵,我们可以使用$ salt-minion -l debug 来启动它。

例如,如果要在主服务器的所有小部件中创建文件,则可以运行以下命令

$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text

所有节点在salt_files文件夹中都有一个新的sample.text文件。*选项用于引用所有仆从。例如,要指定所有ID号为minion的小仆,我们将使用如下正则表达式

1个
$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text

要查看为给定的小兵收集的元数据,请运行:

1个
$salt ‘minion1’ grains.items.

使用SaltStack设置MongoDB
我们可以使用setDatabase.sls 创建一个名为 myAppdata 的数据库,其内容如下

classes:
 
- service.mongodb.server.cluster
 
parameters:
 
   _param:
 
     mongodb_server_replica_set: myAppdata
 
     mongodb_myAppdata_password: myAppdataPasword
 
     mongodb_admin_password: cloudlab
 
     mongodb_shared_key: xxx
 
   mongodb:
 
     server:
 
       database:
 
         myAppdata:
 
           enabled: true
 
           password: ${_param:mongodb_myAppdata_password}
 
           users:
 
           -  name: myAppdata
 
              password: ${_param:mongodb_myAppdata_password}

**启动单个MongoDB服务器 **

mongodb:
 
  server:
 
    enabled: true
 
    bind:
 
      address: 0.0.0.0
 
      port: 27017
 
    admin:
 
      username: admin
 
      password: myAppdataPasword
 
    database:
 
      myAppdata:
 
        enabled: true
 
        encoding: 'utf8'
 
        users:
 
        - name: 'username'
 
          password: 'password'

使用SaltStack设置MongoDB集群

mongodb:
 
  server:
 
    enabled: true
 
    logging:
 
      verbose: false
 
      logLevel: 1
 
      oplogLevel: 0
 
    admin:
 
      user: admin
 
      password: myAppdataPasword
 
    master: mongo01
 
    members:
 
      - host: 192.168.100.11
 
        priority: 2
 
      - host: 192.168.101.12
 
      - host: 192.168.48.13
 
    replica_set: default
 
    shared_key: myAppdataPasword

结论
与ClusterControl 一样,SaltStack是一种自动化工具,可用于简化部署和操作任务。使用自动化工具,可以减少错误,减少配置时间,并获得更可靠的结果。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论