cephfs mysql_mesos-poc/将MySQL部署在CephFS.md at master · peterwangpei/mesos-poc · GitHub

将MySQL部署在CephFS

启动Ceph

docker run -d \

--net=host \

--privileged \

-v /etc/ceph:/etc/ceph \

-v /var/log/radosgw:/var/log/radosgw \

-e MON_IP=$MON_IP \

-e CLUSTER=ceph \

-e RGW_NAME=radosgw \

-e CEPH_NETWORK=192.168.0.0/24 \

--name=ceph \

ceph/demo

创建用户(可选)

当Ceph容器启动之后,可以使用如下命令创建用户

ceph auth get-or-create client.demo mon 'allow *' osd 'allow *' -o /etc/ceph/ceph.client.demo.keyring

创建Secret

通过如下的命令获得keyring中保存的Key

cat /etc/ceph/ceph.client.demo.keyring | sed -n 's/^.*key *= *//p' | base64

命令执行之后,会生成类似下面结果的字符串

QVFCTkxqeFgrTCt2SlJBQWx0OC9aUlpMbWM5RUxlMUxTeVpxamc9PQo=

然后根据下面的配置创建一个Secret,其中Key部分的值为上一个步骤生成的字符串

apiVersion: v1

kind: Secret

metadata:

name: ceph-secret

data:

key: QVFCTkxqeFgrTCt2SlJBQWx0OC9aUlpMbWM5RUxlMUxTeVpxamc9PQo=

启动MySQL Master

使用Kubernete启动Master

apiVersion: v1

kind: Pod

metadata:

name: master

spec:

containers:

- name: master

image: daocloud.io/library/mysql:5.5.49

ports:

- containerPort: 3306

hostPort: 3306

volumeMounts:

- mountPath: "/data"

name: cephfs

- mountPath: "/etc/mysql/conf.d"

name: conf

env:

- name: "MYSQL_ROOT_PASSWORD"

value: "xA123456"

volumes:

- name: conf

hostPath:

path: /etc/master

- name: cephfs

cephfs:

monitors:

- 192.168.0.160:6789

user: admin

secretRef:

name: ceph-secret

readOnly: false

在/etc/master下创建一个具有以下内容的配置文件,在本例中命名为master.conf:

[mysqld]

log-bin=mysql-bin

server-id=1

datadir=/data/master

注意:由于目前版本Kubernetes的Bug,不能挂接CephFS的目录,所以需要修改MySQL的数据目录(datadir)

启动MySQL Slave

采用与Master类似的方式启动Slave,需要注意的是配置文件中server-id的值不能重复。

创建同步用户

连接到MySQL Master容器

docker exec -it $CONTAINER_ID sh

连接MySQL

mysql -u"$USER" -p"$PASSWORD"

创建用户

CREATE USER 'mysync' IDENTIFIED BY 'xA123456';

同步授权

接上面的命名

GRANT REPLICATION SLAVE ON *.* TO 'mysync';

检查Master的状态

显示Master的状态之后,在后续步骤完成之前,不要做任何操作,以避免日志的位置发生变更

show master status;

如果命令正确执行,则显示类似下面的结果:

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000003 | 73 | | |

+------------------+----------+--------------+------------------+

注意:在后续步骤操作完成之前,不要对Master在进行写入操作,以避免日志的位置发生变化。

配置从数据库

在MySQL Slave上执行下面的命令

change master to master_host='$MASTER_IP',master_user='mysync',master_password='xA123456',master_log_file='上一个步骤显示的日志名称',master_log_pos=上一个步骤显示的日志位置;

启动同步功能

start slave;

检查同步状态

使用下面的命令查看同步状态,如果同步状态都显示正常,则表示同步已经设置成功,至此设置工作已经完成,后续开始测试同步。

show slave status\G

在Master上创建数据库

create database demo;

在Master上创建表

//切换数据库

use demo;

//创建表

create table user(id int(3),name char(10));

//查看数据库

show databases;

在Master上插入数据

可以使用下面的Python批次插入数据

#!/usr/bin/env python

import MySQLdb

db = MySQLdb.connect("$MASTER_IP", "$USEr", "$PASSWORD", "demo")

cursor = db.cursor()

for index in range(0, 100):

sql = "insert into user values" + "(" + str(index) + ",'" + str(index) + "')"

cursor.execute(sql)

try:

db.commit()

except:

db.rollback()

db.close()

在Slave中查看插入的数据

如果一切顺利,那么在Slave中可以看到在Master中插入的数据。

使用RBD

创建池

ceph osd pool create kube 16 16

创建镜像

rbd create kube --size 1024 --pool kube

将RBD挂载到Pod中

apiVersion: v1

kind: Pod

metadata:

name: cephfs4

spec:

containers:

- name: cephfs-rw

image: nginx:1.9.11

volumeMounts:

- mountPath: "/mnt/rbd"

name: rbd

volumes:

- name: rbd

rbd:

monitors:

- 192.168.0.160:6789

user: admin

pool: kube

image: kube

fsType: ext4

keyring: ""

secretRef:

name: ceph-secret

readOnly: false

在线动态调整镜像尺寸

调整镜像尺寸

rbd resize --image kube --pool kube --size 4096

到Pod运行的主机,找到RBD挂载的块设备

mount | grep $卷名/$池名-image-$镜像名

执行的结构可能如下:

/dev/rbd1 on /var/lib/kubelet/plugins/kubernetes.io/rbd/rbd/kube-image-kube type ext4 (rw)

扩展文件系统

sudo resize2fs $挂载点

使用XFS文件系统

安装XFS文件系统支持

apt-get install xfsprogs

创建镜像

rbd create xfs --size 1024 --pool kube

将RBD挂载到Pod中

apiVersion: v1

kind: Pod

metadata:

name: cephfs4

spec:

containers:

- name: cephfs-rw

image: nginx:1.9.11

volumeMounts:

- mountPath: "/mnt/rbd"

name: rbd

volumes:

- name: rbd

rbd:

monitors:

- 192.168.0.160:6789

user: admin

pool: kube

image: kube

fsType: ext4

keyring: ""

secretRef:

name: ceph-secret

readOnly: false

4. 按照上述方式调整镜像大小

5. 调整文件系统

sudo xfs_growfs $挂载点

注意:只有以非只读方式挂载的文件系统才能够调整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值