Deploy HA-RabbitMQ Operator
通过 K8s+Operator 部署高可用 RabbitMQ
一. 安装说明¶
安装步骤主要参考官方示例
- k8s 版本要 1.18 及其以上
- 能够在 master 节点上使用 kubectl 命令来管理整个 k8s 集群
- 有默认的一个 StorageClass 存储类,因为默认情况下 RabbitMQ Operator 创建的 RabbitMQ 集群会为每个实例使用 StorageClass 分配一个 10G 的 PVC。但是官方提供的yaml文件中并没有设置使用 StorageClass 存储类的配置,所以需要一个默认的 StorageClass 存储类。
若没有这个默认的 StorageClass 存储类,则创建 RabbitMQ 集群时创建的 pod 状态是 Pending,具体原因是:pod has unbound immediate PersistentVolumeClaims
查看默认 StorageClass 储存类,注意 default
安装步骤
- 安装 RabbitMQ 集群操作员
- 使用 RabbitMQ 集群操作员部署 RabbitMQ 集群
- 查看 RabbitMQ日志
- 访问 RabbitMQ 管理 UI
-
设置应用访问 RabbitMQ 集群
-
第一种方式是采用插件的方式,详见地址: https://cloud.tencent.com/developer/article/1782766 需要先安装插件管理工具 krew,然后才能使用插件的方式进行安装。在安装的过程中会从 GitHub 上下载东西,访问 GitHub 慢的不建议采用这种方式
-
第二种方式是通过 yaml 文件的方式进行安装,这里采用这种方式进行
二. 安装 Operator¶
1)使用 yaml 文件的方式进行安装 cluster-operator ( yaml 文件下载地址 )
2)会创建一个新的名称空间:rabbitmq-system
3)通过上面的显示可以发现有个一脉相承的如下关系:
4)新的自定义资源 rabbitmqclusters.rabbitmq.com。自定义资源允许我们定义用于创建 RabbitMQ 集群的 API。以及一些 rbac 角色。这些是操作员创建、更新和删除 RabbitMQ 集群所必需的。
三. 安装 RabbitMQ¶
1)使用 cluster-operator 创建 RabbitMQ 集群
简单的 yaml 文件模版,这是最简单的 RabbitmqCluster 定义。唯一显示指定的属性是集群的名称。其他一切都将根据集群运营商的默认值进行配置。
examples 模版目录 还有许多其他引用,比如用 TLS、mTLS 创建 RabbitMQ 集群,用生产默认值设置集群,添加社区插件等等。
注意:默认没有写名称空间则会部署到defalut中,这里修改成rabbitmq-system
2)在 rabbitmq-system 命名空间中创建了一个名为 my-rabbit-cluster 的 RabbitMQ 集群。可以在创建 RabbitMQ 集群时看到它:
3)还可以看到创建的 rabbitmqclusters.rabbitmq.com 自定义资源的实例。
4)查看 RabbitMQ 日志
5)访问 RabbitMQ 管理 UI
获取用户名和密码
默认会创建一个类型是 ClusterIP 的 svc
- 办法一是修改 ClusterIP 类型为 NodePort,使用宿主机 IP 和 nodeport 端口来访问
注:这种方式一开始修改后是能够访问使用的,但是删除集群后重新创建并这样设置,就无法修改成 NodePort了,很是奇怪。
- 办法二是使用 kube-proxy 进行代理来实现访问
现在我们可以通过 localhost:15672 在打开浏览器并查看管理 UI。或者,可以运行 curl 命令来验证访问:
6)设置应用访问 RabbitMQ 集群
四. 创建监控¶
**使用 Prometheus & Grafana 监控 rabbitmq 集群,可参考 **官方文档地址
注意:当扩充增加到 2 个甚至更多的时候,需要 k8s 节点资源是否足够。如报错:0/3 nodes are available: 3 Insufficient cpu.
原因是 k8s 节点资源资源不足。
1)创建 rabbitmq 集群时使用的是默认配置,默认配置中资源要求如下:
2)自动生成第二个 pod 时查看的详情如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
|