使用ProxySQL配置负载均衡¶
雷竞技下载官网Percona Operator for MySQL基于Percona XtraDB Cluster提供了两个集群组件来提供负载均衡和代理服务:您可以使用任何一个HAProxy或ProxySQL.控件的启用或禁用,可以控制要使用哪一个haproxy.enabled而且proxysql.enabled的选项。部署/ cr.yaml配置文件。
使用以下命令启用ProxySQL:
$kubectl补丁pxccluster1——类型=合并——补丁”{"规范":{" proxysql ": {“启用”:没错,“大小”:3,"image": "雷竞技下载官网percona/percona-xtradb-cluster-operator:1.12.0-proxysql"},"haproxy": {"enabled": false}}}’
请注意
由于显而易见的原因,Operator将不允许同时启用HAProxy和ProxySQL。
结果设置将使用数字0 Percona XtraDB群集成员(雷竞技下载官网cluster1-pxc-0默认情况下)作为写入器。
升级具有ProxySQL的集群时,将执行以下步骤。首先,读取器成员逐个升级:Operator等待,直到升级的成员在ProxySQL中显示为在线状态,然后继续升级下一个成员。当所有读取器的升级完成后,写入器Percona XtraDB Cluster成员就最终升级了。雷竞技下载官网
请注意
当ProxySQL和Percona XtraD雷竞技下载官网B Cluster同时升级时,它们将并行升级。
将自定义配置选项传递给ProxySQL¶
您可以将自定义配置传递给ProxySQL
编辑
部署/ cr.yaml文件,使用ConfigMap,
使用秘密对象。
请注意
如果以这种方式指定自定义ProxySQL配置,ProxySQL将尝试将传递的参数与先前设置的配置参数合并(如果有的话)。如果ProxySQL未能合并某些选项,您将在其日志中看到一个警告。
编辑部署/ cr.yaml文件¶
控件中添加选项proxysql.cnf配置文件proxysql.configuration输入部署/ cr.yaml文件。这里有一个例子:
...proxysql:启用:假大小:3.图像:雷竞技下载官网percona / percona-xtradb-cluster-operator: 1.12.0-proxysql配置:|datadir = " / var / lib / proxysql”admin_variables ={admin_credentials = " proxyadmin: admin_password”mysql_ifaces = " 0.0.0.0:6032 "refresh_interval = 2000cluster_username = " proxyadmin "cluster_password = " admin_password "cluster_check_interval_ms = 200cluster_check_status_frequency = 100cluster_mysql_query_rules_save_to_disk = truecluster_mysql_servers_save_to_disk = truecluster_mysql_users_save_to_disk = truecluster_proxysql_servers_save_to_disk = truecluster_mysql_query_rules_diffs_before_sync = 1cluster_mysql_servers_diffs_before_sync = 1cluster_mysql_users_diffs_before_sync = 1cluster_proxysql_servers_diffs_before_sync = 1}mysql_variables ={raybet雷竞技竞猜在线官网monitor_password = "监控"raybet雷竞技竞猜在线官网monitor_galera_healthcheck_interval = 1000线程= 2max_connections = 2048default_query_delay = 0default_query_timeout = 10000poll_timeout = 2000接口= " 0.0.0.0:3306 "default_schema = " information_schema "stacksize = 1048576connect_timeout_server = 10000raybet雷竞技竞猜在线官网monitor_history = 60000raybet雷竞技竞猜在线官网monitor_connect_interval = 20000raybet雷竞技竞猜在线官网monitor_ping_interval = 10000ping_timeout_server = 200commands_stats = truesessions_sort = truehave_ssl = truessl_p2s_ca = " / etc / proxysql / ssl-internal / ca.crt”ssl_p2s_cert = " / etc / proxysql / ssl-internal / tls.crt”ssl_p2s_key = " / etc / proxysql / ssl-internal / tls.key”ssl_p2s_cipher = " ECDHE-RSA-AES128-GCM-SHA256 "}
使用ConfigMap¶
您可以使用configmap和集群重启来重置配置选项。configmap允许Kubernetes在容器化应用程序中传递或更新配置数据。
使用kubectl命令从外部资源创建configmap,更多信息请参见配置Pod使用ConfigMap.
例如,您定义了一个proxysql.cnf配置文件,设置如下:
datadir = " / var / lib / proxysql”admin_variables = {admin_credentials =“proxyadmin: admin_password mysql_ifaces”=“0.0.0.0:6032”refresh_interval = 2000 cluster_username =“proxyadmin cluster_password”=“admin_password cluster_check_interval_ms = 200 cluster_check_status_frequency = 100 cluster_mysql_query_rules_save_to_disk = true cluster_mysql_servers_save_to_disk = true cluster_mysql_users_save_to_disk = true cluster_proxysql_servers_save_to_disk = true cluster_mysql_query_rules_diffs_before_sync = 1cluster_mysql_servers_diffs_before_sync = 1 cluster_mysql_users_diffs_before_sync = 1 cluster_proxysql_servers_diffs_before_sync = 1} mysql_variableraybet雷竞技竞猜在线官网s = {monitor_password =“监控”monitor_galera_healthcheck_interval = 1000 = 2线程max_connections = 2048 default_query_delay = 0 default_query_timeout = 10000 poll_timeout = 2000接口=“0.0.0.0:3306 default_schema”=“information_schema”stacksize = 1048576 connect_timeout_server = 10000 monitor_history = 60000 monitor_connect_interval = 20000raybet雷竞技竞猜在线官网Monitor_ping_interval =10000 ping_timeout_server=200 commands_stats=true sessions_sort=true have_ssl=true ssl_p2s_ca="/etc/proxysql/ssl-internal/ca. "crt " ssl_p2s_cert = " / etc / proxysql / ssl-internal / tls。crt " ssl_p2s_key = " / etc / proxysql / ssl-internal / tls。key" ssl_p2s_cipher="ECDHE-RSA-AES128-GCM-SHA256"}
方法创建configmapproxysql.cnf与Kubectl创建configmap命令。
类型的组合应使用集群名称-proxysql后缀作为configmap的命名约定。查询集群名称,可以使用以下命令:
$kubectl得到pxc
的语法Kubectl创建configmap命令是:
$ kubectl create configmap -proxysql .使用实例
下面的示例定义了cluster1-proxysql作为configmap名称和proxysql.cnf文件作为数据源:
$kubectl创建configmapcluster1-proxysql——从文件=proxysql.cnf
查看已创建的configmap,使用如下命令:
$kubectl描述configmapscluster1-proxysql
使用秘密对象¶
操作符也可以存储配置选项Kubernetes秘密.如果您需要对某些敏感数据进行额外的保护,这可能很有用。
您应该创建一个具有特定名称的Secret对象,该名称由您的集群名称和proxysql后缀。
请注意
查询集群名称,可以使用以下命令:
$kubectl得到pxc
配置选项应该放在一个特定的键里面数据部分。此键的名称为proxysql.cnf适用于ProxySQL Pods。
实际选项应该用Base64.
例如,让我们定义一个proxysql.cnf配置文件,并把我们在前面的例子中使用的选项:
datadir = " / var / lib / proxysql”admin_variables = {admin_credentials =“proxyadmin: admin_password mysql_ifaces”=“0.0.0.0:6032”refresh_interval = 2000 cluster_username =“proxyadmin cluster_password”=“admin_password cluster_check_interval_ms = 200 cluster_check_status_frequency = 100 cluster_mysql_query_rules_save_to_disk = true cluster_mysql_servers_save_to_disk = true cluster_mysql_users_save_to_disk = true cluster_proxysql_servers_save_to_disk = true cluster_mysql_query_rules_diffs_before_sync = 1cluster_mysql_servers_diffs_before_sync = 1 cluster_mysql_users_diffs_before_sync = 1 cluster_proxysql_servers_diffs_before_sync = 1} mysql_variableraybet雷竞技竞猜在线官网s = {monitor_password =“监控”monitor_galera_healthcheck_interval = 1000 = 2线程max_connections = 2048 default_query_delay = 0 default_query_timeout = 10000 poll_timeout = 2000接口=“0.0.0.0:3306 default_schema”=“information_schema”stacksize = 1048576 connect_timeout_server = 10000 monitor_history = 60000 monitor_connect_interval = 20000raybet雷竞技竞猜在线官网Monitor_ping_interval =10000 ping_timeout_server=200 commands_stats=true sessions_sort=true have_ssl=true ssl_p2s_ca="/etc/proxysql/ssl-internal/ca. "crt " ssl_p2s_cert = " / etc / proxysql / ssl-internal / tls。crt " ssl_p2s_key = " / etc / proxysql / ssl-internal / tls。key" ssl_p2s_cipher="ECDHE-RSA-AES128-GCM-SHA256"}
你可以通过命令行从你的选项中获得一个Base64编码的字符串,如下所示:
$猫proxysql.cnf|base64——包装=0
$猫proxysql.cnf|base64
请注意
类似地,你可以从Base64编码的字符串中读取选项列表:
$回声“ZGF0YWRpcj0iL3Zhci9saWIvcHJveHlzcWwiCgphZG1pbl92YXJpYWJsZXMgPQp7CiBhZG1pbl9j \cmVkZW50aWFscz0icHJveHlhZG1pbjphZG1pbl9wYXNzd29yZCIKIG15c3FsX2lmYWNlcz0iMC4w \LjAuMDo2MDMyIgogcmVmcmVzaF9pbnRlcnZhbD0yMDAwCgogY2x1c3Rlcl91c2VybmFtZT0icHJv \eHlhZG1pbiIKIGNsdXN0ZXJfcGFzc3dvcmQ9ImFkbWluX3Bhc3N3b3JkIgogY2x1c3Rlcl9jaGVj \a19pbnRlcnZhbF9tcz0yMDAKIGNsdXN0ZXJfY2hlY2tfc3RhdHVzX2ZyZXF1ZW5jeT0xMDAKIGNs \dXN0ZXJfbXlzcWxfcXVlcnlfcnVsZXNfc2F2ZV90b19kaXNrPXRydWUKIGNsdXN0ZXJfbXlzcWxf \c2VydmVyc19zYXZlX3RvX2Rpc2s9dHJ1ZQogY2x1c3Rlcl9teXNxbF91c2Vyc19zYXZlX3RvX2Rp \c2s9dHJ1ZQogY2x1c3Rlcl9wcm94eXNxbF9zZXJ2ZXJzX3NhdmVfdG9fZGlzaz10cnVlCiBjbHVz \dGVyX215c3FsX3F1ZXJ5X3J1bGVzX2RpZmZzX2JlZm9yZV9zeW5jPTEKIGNsdXN0ZXJfbXlzcWxf \c2VydmVyc19kaWZmc19iZWZvcmVfc3luYz0xCiBjbHVzdGVyX215c3FsX3VzZXJzX2RpZmZzX2Jl \Zm9yZV9zeW5jPTEKIGNsdXN0ZXJfcHJveHlzcWxfc2VydmVyc19kaWZmc19iZWZvcmVfc3luYz0x \Cn0KCm15c3FsX3ZhcmlhYmxlcz0KewogbW9uaXRvcl9wYXNzd29yZD0ibW9uaXRvciIKIG1vbml0 \b3JfZ2FsZXJhX2hlYWx0aGNoZWNrX2ludGVydmFsPTEwMDAKIHRocmVhZHM9MgogbWF4X2Nvbm5l \Y3Rpb25zPTIwNDgKIGRlZmF1bHRfcXVlcnlfZGVsYXk9MAogZGVmYXVsdF9xdWVyeV90aW1lb3V0 \PTEwMDAwCiBwb2xsX3RpbWVvdXQ9MjAwMAogaW50ZXJmYWNlcz0iMC4wLjAuMDozMzA2IgogZGVm \YXVsdF9zY2hlbWE9ImluZm9ybWF0aW9uX3NjaGVtYSIKIHN0YWNrc2l6ZT0xMDQ4NTc2CiBjb25u \ZWN0X3RpbWVvdXRfc2VydmVyPTEwMDAwCiBtb25pdG9yX2hpc3Rvcnk9NjAwMDAKIG1vbml0b3Jf \Y29ubmVjdF9pbnRlcnZhbD0yMDAwMAogbW9uaXRvcl9waW5nX2ludGVydmFsPTEwMDAwCiBwaW5n \X3RpbWVvdXRfc2VydmVyPTIwMAogY29tbWFuZHNfc3RhdHM9dHJ1ZQogc2Vzc2lvbnNfc29ydD10 \cnVlCiBoYXZlX3NzbD10cnVlCiBzc2xfcDJzX2NhPSIvZXRjL3Byb3h5c3FsL3NzbC1pbnRlcm5h \bC9jYS5jcnQiCiBzc2xfcDJzX2NlcnQ9Ii9ldGMvcHJveHlzcWwvc3NsLWludGVybmFsL3Rscy5j \cnQiCiBzc2xfcDJzX2tleT0iL2V0Yy9wcm94eXNxbC9zc2wtaW50ZXJuYWwvdGxzLmtleSIKIHNz \bF9wMnNfY2lwaGVyPSJFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYiCn0K”|base64——解码
最后,使用yaml文件创建Secret对象。例如,您可以创建一个部署/ my-proxysql-secret.yaml文件内容如下:
apiVersion:v1种类:秘密元数据:名字:cluster1-proxysql数据:my.cnf:“ZGF0YWRpcj0iL3Zhci9saWIvcHJveHlzcWwiCgphZG1pbl92YXJpYWJsZXMgPQp7CiBhZG1pbl9j \cmVkZW50aWFscz0icHJveHlhZG1pbjphZG1pbl9wYXNzd29yZCIKIG15c3FsX2lmYWNlcz0iMC4w \LjAuMDo2MDMyIgogcmVmcmVzaF9pbnRlcnZhbD0yMDAwCgogY2x1c3Rlcl91c2VybmFtZT0icHJv \eHlhZG1pbiIKIGNsdXN0ZXJfcGFzc3dvcmQ9ImFkbWluX3Bhc3N3b3JkIgogY2x1c3Rlcl9jaGVj \a19pbnRlcnZhbF9tcz0yMDAKIGNsdXN0ZXJfY2hlY2tfc3RhdHVzX2ZyZXF1ZW5jeT0xMDAKIGNs \dXN0ZXJfbXlzcWxfcXVlcnlfcnVsZXNfc2F2ZV90b19kaXNrPXRydWUKIGNsdXN0ZXJfbXlzcWxf \c2VydmVyc19zYXZlX3RvX2Rpc2s9dHJ1ZQogY2x1c3Rlcl9teXNxbF91c2Vyc19zYXZlX3RvX2Rp \c2s9dHJ1ZQogY2x1c3Rlcl9wcm94eXNxbF9zZXJ2ZXJzX3NhdmVfdG9fZGlzaz10cnVlCiBjbHVz \dGVyX215c3FsX3F1ZXJ5X3J1bGVzX2RpZmZzX2JlZm9yZV9zeW5jPTEKIGNsdXN0ZXJfbXlzcWxf \c2VydmVyc19kaWZmc19iZWZvcmVfc3luYz0xCiBjbHVzdGVyX215c3FsX3VzZXJzX2RpZmZzX2Jl \Zm9yZV9zeW5jPTEKIGNsdXN0ZXJfcHJveHlzcWxfc2VydmVyc19kaWZmc19iZWZvcmVfc3luYz0x \Cn0KCm15c3FsX3ZhcmlhYmxlcz0KewogbW9uaXRvcl9wYXNzd29yZD0ibW9uaXRvciIKIG1vbml0 \b3JfZ2FsZXJhX2hlYWx0aGNoZWNrX2ludGVydmFsPTEwMDAKIHRocmVhZHM9MgogbWF4X2Nvbm5l \Y3Rpb25zPTIwNDgKIGRlZmF1bHRfcXVlcnlfZGVsYXk9MAogZGVmYXVsdF9xdWVyeV90aW1lb3V0 \PTEwMDAwCiBwb2xsX3RpbWVvdXQ9MjAwMAogaW50ZXJmYWNlcz0iMC4wLjAuMDozMzA2IgogZGVm \YXVsdF9zY2hlbWE9ImluZm9ybWF0aW9uX3NjaGVtYSIKIHN0YWNrc2l6ZT0xMDQ4NTc2CiBjb25u \ZWN0X3RpbWVvdXRfc2VydmVyPTEwMDAwCiBtb25pdG9yX2hpc3Rvcnk9NjAwMDAKIG1vbml0b3Jf \Y29ubmVjdF9pbnRlcnZhbD0yMDAwMAogbW9uaXRvcl9waW5nX2ludGVydmFsPTEwMDAwCiBwaW5n \X3RpbWVvdXRfc2VydmVyPTIwMAogY29tbWFuZHNfc3RhdHM9dHJ1ZQogc2Vzc2lvbnNfc29ydD10 \cnVlCiBoYXZlX3NzbD10cnVlCiBzc2xfcDJzX2NhPSIvZXRjL3Byb3h5c3FsL3NzbC1pbnRlcm5h \bC9jYS5jcnQiCiBzc2xfcDJzX2NlcnQ9Ii9ldGMvcHJveHlzcWwvc3NsLWludGVybmFsL3Rscy5j \cnQiCiBzc2xfcDJzX2tleT0iL2V0Yy9wcm94eXNxbC9zc2wtaW50ZXJuYWwvdGxzLmtleSIKIHNz \bF9wMnNfY2lwaGVyPSJFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYiCn0K”
准备好后,使用以下命令应用它:
$kubectl创建- f部署/ my-proxysql-secret.yaml
请注意
不要忘记重新启动Percona XtraDB Cl雷竞技下载官网uster,以确保集群已经更新了配置。
访问ProxySQL管理界面¶
你可以使用ProxySQL管理界面来配置其设置。
以这种方式配置ProxySQL意味着使用MySQL协议连接到它,需要做两件事:
ProxySQL Pod名称
ProxySQL管理员密码
您可以通过库贝特尔去拿吊舱命令,输出如下:
$ kubectl get pods NAME READY STATUS重启AGE cluster1-pxc-node-0 1/1运行0 5m cluster1-pxc-node-1 1/1运行0 4m cluster1-pxc-node-2 1/1运行0 2m cluster1-proxysql-0 1/1运行0 5m percona-xtradb-cluster-operator-dc67雷竞技下载官网778fd-qtspz 1/1运行0 6m
下一个命令将打印所需的管理员密码:
$ kubectl get secrets $(kubectl get pxc -o jsonpath='{.items[].spec. seretsname}') -o template='{{.data. user}')Proxyadmin | base64decode}}'
当Pod名和admin密码都已知时,按如下方式连接ProxySQLcluster1-proxysql-0还有Pod的名字admin_password实际密码:
$ kubectl exec -it cluster1-proxysql-0——mysql -h127.0.0.1 -P6032 -uproxyadmin -padmin_password