Skip to content

Commit

Permalink
update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
guowei committed Feb 22, 2017
1 parent b87d050 commit d858ee9
Showing 1 changed file with 27 additions and 19 deletions.
46 changes: 27 additions & 19 deletions MinikubeCluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -235,11 +235,10 @@ $ vim /var/lib/libvirt/dnsmasq/virbr1.status
```
该命令会在`$GOPATH/src/github.com/youtube/vitess/`目录下下载并且编译`vtctlclient`源码, 同时也会把编译好的vtctlclient二进制文件拷贝到目录`$GOPATH/bin`下。

### 本地kubectl  
### 本地kubectl

如果正常按照文档说明安装,本地`kubectl`就应该已经安装完成,这里我们需要再次校验一下,确保`kubectl`处于正常可用状态。
检查`kubectl`是否已经正常安装并设置环境变量PATH:

``` sh
$ which kubectl
### example output:
Expand All @@ -258,10 +257,12 @@ $ vim /var/lib/libvirt/dnsmasq/virbr1.status
``` sh
$ cd $GOPATH/src/github.com/youtube/vitess/examples/kubernetes
```

2. 修改本地配置

运行configure.sh脚本来生成config.sh文件,config.sh用于自定义的集群设置。对于备份官方支持两种方式file和gcs方式,我们这里使用file方式创建备份。
``` sh

vitess/examples/kubernetes$ ./configure.sh
### example output:
# Vitess Docker image (leave empty for default) []:
Expand All @@ -276,7 +277,8 @@ $ vim /var/lib/libvirt/dnsmasq/virbr1.status

3. 启动etcd集群

Vitess[拓扑服务](http://vitess.io/overview/concepts.html#topology-service)存储Vitess集群中所有服务器的协作元数据, 他将此数据存储在支持数据一致性存储系统中。本例中我们使用[etcd](https://github.com/coreos/etcd)来存储,注意,我们需要自己的etcd集群,与Kubernetes本身使用的集群分开。
Vitess[拓扑服务](http://vitess.io/overview/concepts.html#topology-service)存储Vitess集群中所有服务器的协作元数据, 他将此数据存储在支持数据一致性的分布式存储系统中。本例中我们使用[etcd](https://github.com/coreos/etcd)来存储,注意:我们需要自己的etcd集群,与Kubernetes本身使用的集群分开。

``` sh
vitess/examples/kubernetes$ ./etcd-up.sh
### example output:
Expand Down Expand Up @@ -340,13 +342,14 @@ $ vim /var/lib/libvirt/dnsmasq/virbr1.status

http://localhost:8001/api/v1/proxy/namespaces/default/services/vtctld:web/

界面截图如下:
![Alt text](https://github.com/davygeek/vitessdoc/blob/master/res/vtctld_web.png)

同时,还可以通过proxy进入[Kubernetes Dashboard]
(http://kubernetes.io/v1.1/docs/user-guide/ui.html), 监控nodes, pods和服务器状态:

http://localhost:8001/ui

控制台截图如下:
![Alt text](https://github.com/davygeek/vitessdoc/blob/master/res/Kubernetes_ui.png)

6. **启动vttablets**
Expand Down Expand Up @@ -394,17 +397,17 @@ $ vim /var/lib/libvirt/dnsmasq/virbr1.status

**注意:** 许多`vtctlclient`命令在执行成功时不返回任何输出。

首先,指定tablets其中一个作为初始化的master。Vitess会自动连接其他slaves的mysqld实例,以便他们开启从master复制数据的mysqld进程; 默认数据库创建也是如此。 因为我们的keyspace名称为`test_keyspace`,所以MySQL的数据库会被命名为`vt_test_keyspace`
首先,指定tablets其中一个作为初始化的master。Vitess会自动连接其他slaves的mysqld实例,以便他们开启从master复制数据; 默认数据库创建也是如此。 因为我们的keyspace名称为`test_keyspace`,所以MySQL的数据库会被命名为`vt_test_keyspace`
``` sh
vitess/examples/kubernetes$ ./kvtctl.sh InitShardMaster -force test_keyspace/0 test-0000000100
### example output:
# master-elect tablet test-0000000100 is not the shard master, proceeding anyway as -force was used
# master-elect tablet test-0000000100 is not a master in the shard, proceeding anyway as -force was used
```

**注意:** 因为分片是第一次启动, tablets还没有准备做任何复制操作, 也不存在master。如果分片不是一个全新的分片,`InitShardMaster`命令增加`-force`标签可以绕过应用的健全检查
**注意:** 因为分片是第一次启动, tablets还没有准备做任何复制操作, 也不存在master。如果分片不是一个全新的分片,`InitShardMaster`命令增加`-force`标签可以绕过应用的完整性检查

tablets更新完成后,你可以看到一个**master**, 多个 **replica****rdonly** tablets:
tablets更新完成后,你可以看到一个 **master**, 多个 **replica****rdonly** tablets:

``` sh
vitess/examples/kubernetes$ ./kvtctl.sh ListAllTablets test
Expand All @@ -421,7 +424,7 @@ $ vim /var/lib/libvirt/dnsmasq/virbr1.status

9. **创建表**

`vtctlclient`命令可以跨越keyspace里面的所有tablets来应用数据库变更。以下命令创建定义在文件`create_test_table.sql`中的表
`vtctlclient`命令可以跨越keyspace里面的所有tablets来应用数据库变更。以下命令可以通过文件`create_test_table.sql`的内容来创建表

``` sh
# Make sure to run this from the examples/kubernetes dir, so it finds the file.
Expand All @@ -439,8 +442,8 @@ $ vim /var/lib/libvirt/dnsmasq/virbr1.status
) ENGINE=InnoDB
```

我们可以通过运行此命令来确认在给定的tablet是否创建成功`test-0000000100``ListAllTablets`命令显示
tablet列表其中一个tablet的别名
我们可以通过运行此命令来确认在给定的tablet上表是否创建成功`test-0000000100``ListAllTablets`命令显示
tablet列表中一个tablet的别名

``` sh
vitess/examples/kubernetes$ ./kvtctl.sh GetSchema test-0000000100
Expand All @@ -461,37 +464,36 @@ $ vim /var/lib/libvirt/dnsmasq/virbr1.status

10. **执行备份**

现在, 数据库初始化已经应用, 是执行第一次[备份](http://vitess.io/user-guide/backup-and-restore.html)的最佳时间。在他们连上master并且复制之前, 这个备份将用于自动还原运行的任何其他副本。

现在, 数据库初始化已经应用, 可以开始执行第一次[备份](http://vitess.io/user-guide/backup-and-restore.html)了。在他们连上master并且复制之前, 这个备份将用于自动还原运行的任何其他副本。
如果一个已经存在的tablet出现故障,并且没有备份数据, 那么他将会自动从最新的备份恢复并且恢复复制。

选择其中一个 **rdonly** tablets并且执行备份。因为在数据复制期间创建一致性快照tablet会暂停复制并且停止服务,所以我们使用 **rdonly** tablet代替 **replica**
选择其中一个 **rdonly** tablets并且执行备份。因为在数据复制期间创建快照的tablet会暂停复制并且停止服务,所以我们使用 **rdonly** 代替 **replica**
``` sh
vitess/examples/kubernetes$ ./kvtctl.sh Backup test-0000000104
```

After the backup completes, you can list available backups for the shard:
备份完成后,可以通过一下命令查询备份列表:

``` sh
vitess/examples/kubernetes$ ./kvtctl.sh ListBackups test_keyspace/0
### example output:
# 2015-10-21.042940.test-0000000104
# 2017-02-21.142940.test-0000000104
```

11. **初始化Vitess路由**

在本例中, 我们只使用了没有特殊配置的单个数据库。因此,我们只需要确保当前(空)配置处于服务状态
在本例中, 我们只使用了没有特殊配置的单节点数据库。因此,我们只需要确保当前配置的服务处于可用状态
我们可以通过运行以下命令完成:

``` sh
vitess/examples/kubernetes$ ./kvtctl.sh RebuildVSchemaGraph
```

因为在运行,此命令将不显示任何输出。
此命令执行完成后将不显示任何输出

12. **启动vtgate**

Vitess通过使用[vtgate](http://vitess.io/overview/#vtgate)路由每个客户端的查询到正确的`vttablet`。
Vitess通过使用[vtgate](http://vitess.io/overview/#vtgate)来路由每个客户端的查询到正确的`vttablet`。
在KubernetesIn中`vtgate`服务将连接分发到一个`vtgate`pods池中。pods由[replication controller](http://kubernetes.io/v1.1/docs/user-guide/replication-controller.html)来制定。

``` sh
Expand All @@ -502,6 +504,12 @@ $ vim /var/lib/libvirt/dnsmasq/virbr1.status
# Creating vtgate replicationcontroller in cell test...
# replicationcontroller "vtgate-test" created
```
13. **说明**

到目前位置,我们整体的Vitess环境就搭建好了,可以使用命令连接服务进行测试,也可以自己部署对应的应用进行测试。 测试用例可以参考官方提供的[测试用例](http://vitess.io/getting-started/#test-your-cluster-with-a-client-app)。

## 其他
[Kubernetes中文文档](https://www.kubernetes.org.cn/k8s)

基础环境的搭建完全是依赖于Kubernetes, 以下列出了对应的Kubernetes文档, 有需要的可以根据需要进行查阅。
[Kubernetes中文文档](https://www.kubernetes.org.cn/k8s)
[Kubernetes官方文档](https://kubernetes.io/docs/)

0 comments on commit d858ee9

Please sign in to comment.