AWS EKS运行有状态应用Mysql8Word文件下载.docx
- 文档编号:15878537
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:17
- 大小:244.01KB
AWS EKS运行有状态应用Mysql8Word文件下载.docx
《AWS EKS运行有状态应用Mysql8Word文件下载.docx》由会员分享,可在线阅读,更多相关《AWS EKS运行有状态应用Mysql8Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
2.有1个主节点(Master);
有多个从节点(Slave);
从节点需要能水平扩展;
3.所有的写操作,只能在主节点上执行;
读操作可以在所有节点上执行。
这个主从模式的MySQL集群非常典型。
我们通过一张图来表示。
2、存储
如果是自建kubernetes集群,你不懂golang开发的话,很难编写出CSI存储插件,存储类型可能会是你非常头疼的事情,但我们采用AWSEKS,这会让我们非常省心,因为AWSEKS已经帮我们做好了storageClass。
采用storageClass,能够自动创建相应的pv和pvc,非常方便。
运行有状态应用Mysql,我们需要用到块存储,即AWSEBS。
AWSEBS存储类型有:
io1,gp2,gp3,sc1,st1。
默认值:
gp2。
通过如下命令,可以查看AWSEKS帮我们做好的storageClass。
默认只有gp2类型的,我们可以直接使用。
$kubectlgetstorageclass#或$kubectlgetsc
#会输出如下内容
NAMEPROVISIONERAGE
gp2(default)kubernetes.io/aws-ebs37m
这个storageClass非常容易实现,它是由gp2-storage-class.yaml这个文件生成的,内容如下:
apiVersion:
storage.k8s.io/v1
kind:
StorageClass
metadata:
name:
gp2
annotations:
storageclass.kubernetes.io/is-default-class:
"
true"
provisioner:
kubernetes.io/aws-ebs
parameters:
type:
fsType:
ext4
如果,你想用其它类型的StorageClass,可以将配置文件中的type,更改为其它,如gp3。
通过如下命令,即可创建。
$kubectlcreate-fgp2-storage-class.yaml
3、命名空间namespace
配置文件中,如果没有指定namespace,默认会自动使用default,在生产环境中,最好是单独创建个命名空间,创建方法
mysql-ns.yaml
v1
Namespace
mysql
接下来使用如下命令创建namespace
$kubectlcreate-fmysql-ns.yaml
记得在secret、statufulset文件中,加上如下一行。
metadata
namespace:
4、密钥Secret
我们将数据库的帐号密码存在Secret中。
Secret对象要求这些数据必须是经过Base64转码的,以免出现明文密码的安全隐患。
这个转码操作也很简单,比如:
$echo-n'
root'
|base64
cm9vdA==
123456'
MTIzNDU2
然后使用如下文件如mysql-secret.yaml
Secret
prod-db-secret
type:
Opaque
data:
password:
MTIzNDU2
username:
cm9vdA==
接下来,我们尝试一下创建这个Secret:
$kubectlcreate-fmysql-secret.yaml
5、配置ConfigMap
可能以前我们习惯在Deployment或Statufulset中写配置文件,我建议生产环境中,配置文件采用configmap。
做mysql读写分离时,Master节点和Slave节点需要有不同的配置文件。
内容如下mysql-config.yaml
ConfigMap
labels:
app:
f:
|
[mysqld]
log-bin
|
[mysqld]
super-read-only
relay_log_info_repository=table
master_info_repository=table
relay_log_recovery=1
接下来,我们尝试一下创建这个configmap:
$kubectlcreate-fmysql-configmap.yaml
如果你的程序是之前一直是在mysql5.7上运行,你可能会用到如下configMap
[client]
default-character-set=utf8mb4
[mysql]
binlog_expire_logs_seconds=2592000
max_connections=10000
binlog_format=MIXED
explicit_defaults_for_timestamp=true
lower_case_table_names=1
max_allowed_packet=128M
innodb-log-file-size=64M
default-time-zone='
+8:
00'
default-authentication-plugin=mysql_native_password
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='
SETNAMESutf8mb4COLLATEutf8mb4_unicode_ci'
secure_file_priv=/var/lib/mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#如果CM配置文件f部分没有relay_log_info_repository=table、master_info_repository=table和relay_log_recovery=1那么最后一个从节点,始终不会正常。
6、服务Service
6.1集群内部访问
我们通过HeadlessService来实现集群内部的访问,见配置文件。
mysql-service.yaml
Service
spec:
ports:
-name:
port:
3306
clusterIP:
None
selector:
---
mysql-read
6.2集群外部访问
如果你想通过navicat等工具,远程连接数据库,可以通过如下两种方法。
方法一:
通过nodePort,访问方式:
nodeIP:
30006
mysql-service-nodeport.yaml
#可读写
mysql-node-rw
-po
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AWS EKS运行有状态应用Mysql8 EKS 运行 状态 应用 Mysql8