为kubernetes部署rabbitmq集群

・6 分钟阅读

  • 源代码名称: kubernetes-rabbitmq-cluster
  • 源代码网址: https://www.github.com/nanit/kubernetes-rabbitmq-cluster
  • kubernetes-rabbitmq-cluster的文档
  • kubernetes-rabbitmq-cluster的源代码下载
  • Git URL:
    git://www.github.com/nanit/kubernetes-rabbitmq-cluster.git
  • Git Clone代码到本地:
    git clone https://www.github.com/nanit/kubernetes-rabbitmq-cluster
  • Subversion代码到本地:
    $ svn co --depth empty https://www.github.com/nanit/kubernetes-rabbitmq-cluster
                              Checked out revision 1.
                              $ cd repo
                              $ svn up trunk
              
  • kubernetes-rabbitmq-cluster

    在Kubernetes上部署rabbitmq集群。

    它使用 rabbitmq-clusterer插件来实现集群。

    要求:

    • Kubernetes版本 1.5. X ( 我们正在使用 StatefulSet )
    • 使用Kubernetes API配置kubectl
    • 在AWS上的Kubernetes 1.5.2上测试
    • 可选- 访问你自己的Docker repository 存储你自己的镜像。

    用户定义内容:

    • 一个 3节点rabbitmq集群作为 StatefulSet
    • 用于控制StatefulSet域的rmq-cluster服务
    • 用于访问群集的rabbitmq服务
    • 一个可选的rabbitmq管理服务,用于访问管理控制面板,

    环境变量:

    名称默认值目
    NAMESPACE 默认值 如果你想在定制的Kubernetes命名空间中创建RabbitMQ集群,那么可以。 如果在部署时名称空间不存在,则将为你创建它。
    DOCKER_REPOSITORY nanit 如果你想构建和使用定制的Docker 存储库,
    SUDO sudo Docker 命令是否应该使用sudo前缀。 更改为""以忽略 sudo。
    RBAC FALSE 应创建角色/系统帐户和角色绑定
    RABBITMQ_REPLICAS 3 群集中的节点数
    RABBITMQ_DEFAULT_USER None 访问管理控制台的默认用户名
    RABBITMQ_DEFAULT_PASS None 访问管理控制台的默认密码
    RABBITMQ_ERLANG_COOKIE None 节点通信需要Erlang密钥
    RABBITMQ_EXPOSE_MANAGEMENT FALSE RMQ管理控制台是否应作为服务公开
    RABBITMQ_MANAGEMENT_SERVICE_TYPE LoadBalancer Kubernetes服务管理控制台的类型
    RABBITMQ_HA_POLICY None 设置这里变量自动设置所有队列上的策略
    RABBITMQ_LOG_LEVEL info 日志级别是为所有RabbitMQ日志类型设置的: connection, mirroring, channel 和 federation. 有效值为:none, error, warning, info, debug
    RABBITMQ_ADDITIONAL_YAML "" 将其他YAML注入stateful集

    部署:

    • 克隆这里存储库
    • 运行:
    
    export NAMESPACE=default && 
    
    
    export DOCKER_REPOSITORY=nanit && 
    
    
    export RABBITMQ_REPLICAS=5 && 
    
    
    export RABBITMQ_DEFAULT_USER=username && 
    
    
    export RABBITMQ_DEFAULT_PASS=password && 
    
    
    export RABBITMQ_ERLANG_COOKIE=secret && 
    
    
    export RABBITMQ_EXPOSE_MANAGEMENT=TRUE && 
    
    
    export RABBITMQ_MANAGEMENT_SERVICE_TYPE=LoadBalancer && 
    
    
    export RABBITMQ_HA_POLICY='{"ha-mode":"all"}' && 
    
    
    export RABBITMQ_LOG_LEVEL=info && 
    
    
    export RABBITMQ_ADDITIONAL_YAML="" && 
    
    
    export SUDO="" && 
    
    
    make deploy
    
    
    
    

    用法:

    安装结束时,应该有一个名为 rabbitmq的服务,你可以使用它连接到集群。 如果你已经设置了环境变量 RABBITMQ_HA_POLICY,那么将创建一个名为 ha-all的策略来对所有队列进行 MATCH。 以下是运行 kubectl get pods,svc 时应该在群集中看到的资源:

    k8s-resources

    请注意以下事项:

    • 如果你选择了不同于 5的RABBITMQ_REPLICAS 数量,则可能会不同。
    • 仅当将 RABBITMQ_EXPOSE_MANAGEMENT 设置为 true 时,rabbitmq管理服务才可用

    更改节点数:

    可以使用RABBITMQ_REPLICAS环境变量配置节点数。 注意,在群集初始部署之后更改节点数是有问题的,因为老的不会将新节点主机提取到 clusterer.config 文件。

    目前,最好的选择是:

    • 删除当前的statefulset kubectl delete statefulset rabbitmq
    • 使用新的RABBITMQ_REPLICAS 值部署集群

    构建你自己的镜像:

    如果要构建使用自己的镜像,请确保将DOCKER_REPOSITORY环境变量更改为你自己的Docker 存储库。 它将构建镜像,将它们推送到 Docker 存储库,并使用它们创建kubernetes部署。

    Docker Compose :

    你可以在docker中运行相同的设置,使用

    
    $ docker-compose build && docker-compose up
    
    
    
    

    然后,进入 localhost:15672,你将看到集群已经建立。

    未来工作:

    • 允许设置不同数量的副本
    讨论
    Fansisi profile image