AWS EKS运行有状态应用Mysql8Word文件下载.docx

上传人:b****4 文档编号:15878537 上传时间:2022-11-16 格式:DOCX 页数:17 大小:244.01KB
下载 相关 举报
AWS EKS运行有状态应用Mysql8Word文件下载.docx_第1页
第1页 / 共17页
AWS EKS运行有状态应用Mysql8Word文件下载.docx_第2页
第2页 / 共17页
AWS EKS运行有状态应用Mysql8Word文件下载.docx_第3页
第3页 / 共17页
AWS EKS运行有状态应用Mysql8Word文件下载.docx_第4页
第4页 / 共17页
AWS EKS运行有状态应用Mysql8Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

AWS EKS运行有状态应用Mysql8Word文件下载.docx

《AWS EKS运行有状态应用Mysql8Word文件下载.docx》由会员分享,可在线阅读,更多相关《AWS EKS运行有状态应用Mysql8Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

AWS EKS运行有状态应用Mysql8Word文件下载.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1