配置HAProxy负载分担¶
雷竞技下载官网Percona Operator for MySQL基于Percona XtraDB Cluster提供了两个集群组件来提供负载均衡和代理服务:您可以使用任何一个HAProxy或ProxySQL.控件的启用或禁用,可以控制要使用哪一个haproxy.enabled而且proxysql.enabled的选项。部署/ cr.yaml配置文件。
使用如下命令启用HAProxy:
$kubectl补丁pxccluster1——类型=合并——补丁”{"规范":{“haproxy ": {“启用”:没错,“大小”:3,"image": "雷竞技下载官网percona/percona-xtradb-cluster-operator:1.12.0-haproxy"}"proxysql": {"enabled": false}}}’
请注意
由于显而易见的原因,Operator将不允许同时启用HAProxy和ProxySQL。
最终的HAPproxy设置将包含两个服务:
cluster1-haproxy服务监听端口3306 (MySQL)和3309(数据库)代理协议).此服务指向数字0 Percona XtraDB群集成员(雷竞技下载官网cluster1-pxc-0)当该成员可用时默认为。如果0成员不可用,则成员将按其数字的降序选择(例如;cluster1-pxc-2,然后cluster1-pxc-1等)。此服务可以用于读和写负载,也可以仅用于写负载(单个写入器模式),用于分离写和读负载的设置。cluster1-haproxy-replicas监听3306端口(MySQL)。该服务选择Percona XtraDB集群雷竞技下载官网成员,根据轮询负载均衡算法为查询提供服务。
升级具有HAProxy的集群时,将执行以下步骤。首先,读取器成员逐个升级:Operator等待升级的Percona XtraDB Cluster成员已同步,然后继续升级下一个成员。雷竞技下载官网当所有读取器的升级完成后,写入器Percona XtraDB Cluster成员就最终升级了。雷竞技下载官网
将自定义配置选项传递给HAProxy¶
您可以通过以下方式之一将自定义配置传递给HAProxy:
- 编辑
部署/ cr.yaml文件, - 使用ConfigMap,
- 使用秘密对象。
请注意
如果以这种方式指定自定义HAProxy配置,则Operator不会提供自己的HAProxy配置文件。这就是为什么您应该指定一组完整的配置选项,或者什么都不指定。
编辑部署/ cr.yaml文件¶
控件中添加选项haproxy.cfg通过编辑配置文件haproxy.configuration输入部署/ cr.yaml文件。这里有一个例子:
...haproxy:启用:真正的大小:3.图像:雷竞技下载官网percona / percona-xtradb-cluster-operator: 1.12.0-haproxy配置:|全球maxconn 2048external-check统计套接字/var/run/haproxy.Sock模式600 expose-fd监听器级别用户违约日志全球tcp方式重试10超时客户端10000连接超时超时服务器10000前端galera-in绑定*:3309 accept-proxy结合*:3306tcp方式选择clitcpkadefault_backend galera-nodes前端galera-replica-in绑定*:3309 accept-proxy结合*:3307tcp方式选择clitcpkadefault_backend galera-replica-nodes
使用ConfigMap¶
您可以使用configmap和集群重启来重置配置选项。configmap允许Kubernetes在容器化应用程序中传递或更新配置数据。
使用kubectl命令从外部资源创建configmap,更多信息请参见配置Pod使用ConfigMap.
例如,您定义了一个haproxy.cfg配置文件,设置如下:
Global maxconn 2048 external-check stats socket /var/run/haproxy.Sock模式600 expose-fd监听器级别用户违约日志全球tcp方式重试10超时客户端10000连接超时超时服务器10000前端galera-in绑定*:3309 accept-proxy bind *:3306 mode tcp option clitcpka default_backend galera-nodes frontend galera-replica-in bind *:3309 accept-proxy bind *:3307 mode tcp option clitcpka default_backend galera-replica-nodes
方法创建configmaphaproxy.cfg与Kubectl创建configmap命令。
类型的组合应使用集群名称haproxy后缀作为configmap的命名约定。查询集群名称,可以使用以下命令:
$kubectl得到pxc
的语法Kubectl创建configmap命令是:
Kubectl create configmap -haproxy .使用实例
下面的示例定义了cluster1-haproxy作为configmap名称和haproxy.cfg文件作为数据源:
$kubectl创建configmapcluster1-haproxy——从文件=haproxy.cfg
查看已创建的configmap,使用如下命令:
$kubectl描述configmapscluster1-haproxy
使用秘密对象¶
操作符也可以存储配置选项Kubernetes秘密.如果您需要对某些敏感数据进行额外的保护,这可能很有用。
您应该创建一个具有特定名称的Secret对象,该名称由您的集群名称和haproxy后缀。
请注意
查询集群名称,可以使用以下命令:
$kubectl得到pxc
配置选项应该放在一个特定的键里面数据部分。此键的名称为haproxy.cfg适用于ProxySQL Pods。
实际选项应该用Base64.
例如,让我们定义一个haproxy.cfg配置文件,并把我们在前面的例子中使用的选项:
Global maxconn 2048 external-check stats socket /var/run/haproxy.Sock模式600 expose-fd监听器级别用户违约日志全球tcp方式重试10超时客户端10000连接超时超时服务器10000前端galera-in绑定*:3309 accept-proxy bind *:3306 mode tcp option clitcpka default_backend galera-nodes frontend galera-replica-in bind *:3309 accept-proxy bind *:3307 mode tcp option clitcpka default_backend galera-replica-nodes
你可以通过命令行从你的选项中获得一个Base64编码的字符串,如下所示:
$猫haproxy.cfg|base64——包装=0
$猫haproxy.cfg|base64
请注意
类似地,你可以从Base64编码的字符串中读取选项列表:
$回声“IGdsb2JhbAogICBtYXhjb25uIDIwNDgKICAgZXh0ZXJuYWwtY2hlY2sKICAgc3RhdHMgc29ja2V0 \IC92YXIvcnVuL2hhcHJveHkuc29jayBtb2RlIDYwMCBleHBvc2UtZmQgbGlzdGVuZXJzIGxldmVs \IHVzZXIKIGRlZmF1bHRzCiAgIGxvZyBnbG9iYWwKICAgbW9kZSB0Y3AKICAgcmV0cmllcyAxMAog \ICB0aW1lb3V0IGNsaWVudCAxMDAwMAogICB0aW1lb3V0IGNvbm5lY3QgMTAwNTAwCiAgIHRpbWVv \dXQgc2VydmVyIDEwMDAwCiBmcm9udGVuZCBnYWxlcmEtaW4KICAgYmluZCAqOjMzMDkgYWNjZXB0 \LXByb3h5CiAgIGJpbmQgKjozMzA2CiAgIG1vZGUgdGNwCiAgIG9wdGlvbiBjbGl0Y3BrYQogICBk \ZWZhdWx0X2JhY2tlbmQgZ2FsZXJhLW5vZGVzCiBmcm9udGVuZCBnYWxlcmEtcmVwbGljYS1pbgog \ICBiaW5kICo6MzMwOSBhY2NlcHQtcHJveHkKICAgYmluZCAqOjMzMDcKICAgbW9kZSB0Y3AKICAg \b3B0aW9uIGNsaXRjcGthCiAgIGRlZmF1bHRfYmFja2VuZCBnYWxlcmEtcmVwbGljYS1ub2Rlcwo = "|base64——解码
最后,使用yaml文件创建Secret对象。例如,您可以创建一个部署/ my-haproxy-secret.yaml文件内容如下:
apiVersion:v1种类:秘密元数据:名字:cluster1-haproxy数据:my.cnf:“IGdsb2JhbAogICBtYXhjb25uIDIwNDgKICAgZXh0ZXJuYWwtY2hlY2sKICAgc3RhdHMgc29ja2V0 \IC92YXIvcnVuL2hhcHJveHkuc29jayBtb2RlIDYwMCBleHBvc2UtZmQgbGlzdGVuZXJzIGxldmVs \IHVzZXIKIGRlZmF1bHRzCiAgIGxvZyBnbG9iYWwKICAgbW9kZSB0Y3AKICAgcmV0cmllcyAxMAog \ICB0aW1lb3V0IGNsaWVudCAxMDAwMAogICB0aW1lb3V0IGNvbm5lY3QgMTAwNTAwCiAgIHRpbWVv \dXQgc2VydmVyIDEwMDAwCiBmcm9udGVuZCBnYWxlcmEtaW4KICAgYmluZCAqOjMzMDkgYWNjZXB0 \LXByb3h5CiAgIGJpbmQgKjozMzA2CiAgIG1vZGUgdGNwCiAgIG9wdGlvbiBjbGl0Y3BrYQogICBk \ZWZhdWx0X2JhY2tlbmQgZ2FsZXJhLW5vZGVzCiBmcm9udGVuZCBnYWxlcmEtcmVwbGljYS1pbgog \ICBiaW5kICo6MzMwOSBhY2NlcHQtcHJveHkKICAgYmluZCAqOjMzMDcKICAgbW9kZSB0Y3AKICAg \b3B0aW9uIGNsaXRjcGthCiAgIGRlZmF1bHRfYmFja2VuZCBnYWxlcmEtcmVwbGljYS1ub2Rlcwo = "
准备好后,使用以下命令应用它:
$kubectl创建- f部署/ my-haproxy-secret.yaml
请注意
不要忘记重新启动Percona XtraDB Cl雷竞技下载官网uster,以确保集群已经更新了配置。
启用Proxy协议¶
代理协议允许为Percona XtraDB集群提供一个真实的客户端地址。雷竞技下载官网
请注意
要使用此特性,您应该有一个Percona XtraDB群集映像版本雷竞技下载官网8.0.21或更新。
通常代理协议是禁用的,Percona XtraDB Cluster看到代理服务器(雷竞技下载官网HAProxy)的IP地址,而不是真实的客户端地址。但在某些情况下,让真实的客户端ip地址对Percona XtraDB集群可见是很重要的:例如,它允许基于客户端/应用程序地址授予特权,并显著增雷竞技下载官网强审计。
您可以在Percona XtraDB集群上启用代理协议雷竞技下载官网proxy_protocol_networks选项pxc.configuration输入部署/ cr.yaml配置文件。
请注意
根据云提供商的负载平衡器,您可能还需要设置haproxy.externaltrafficpolicy选项部署/ cr.yaml.
有关代理协议的更多信息,请参阅官方HAProxy文档.