-
Notifications
You must be signed in to change notification settings - Fork 505
Package
- 下载xpipe代码
git clone https://github.com/ctripcorp/x-pipe.git
- 在xpipe目录下运行make-docker-images.sh即可
cd x-xpipe
bash redis/dockerPackage/make-docker-images.sh ctripcorpxpipe 1.0
- ctripcorpxpipe:在本章节都是docker_id的默认值,表示在dockerhub上申请的用户名
- 1.0:在本章节都是docker_tag的默认值,表示要制作的镜像版本
制作好的镜像可在本地查看
执行命令:docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ctripcorpxpipe/xpipe-proxy 1.0 2482005982e4 6 days ago 748MB
ctripcorpxpipe/xpipe-keeper 1.0 b8672c15c8de 6 days ago 734MB
ctripcorpxpipe/xpipe-console 1.0 62e4ed6d4710 6 days ago 734MB
ctripcorpxpipe/xpipe-meta 1.0 e2c600160ee4 6 days ago 735MB
curl -sOSL https://raw.githubusercontent.com/ctripcorp/x-pipe/master/redis/dockerPackage/start-xpipe-container.sh
bash start-xpipe-container.sh ctripcorpxpipe 1.0 console-proxy
参数列表:
- ctripcorpxpipe:docker_id
- 1.0:docker_tag
- console-proxy:参数mode,代表启动的模式
- console: console+metaserver+keepercontainer
- console-checker:console+checker+metaserver+keepercontainer
- console-proxy: console+metaserver+keepercontainer+proxy(默认)
启动后的容器分布详情参考启动docker 功能验证参考docker验证
- 首先登陆dockerhub,登陆自己的dockerId,替换携程账号(ctripcorpxpipe)
docker login -u ctripcorpxpipe -p
- 上传docker镜像
docker push ctripcorpxpipe/xpipe-console:1.0
docker push ctripcorpxpipe/xpipe-keeper:1.0
docker push ctripcorpxpipe/xpipe-meta:1.0
docker push ctripcorpxpipe/xpipe-proxy:1.0
mvn clean install -Plocal,package -DskipTests
看到如下输出,代表打包成功:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] xpipe-parent ....................................... SUCCESS [3.613 s]
[INFO] core ............................................... SUCCESS [8.144 s]
[INFO] redis-parent ....................................... SUCCESS [0.293 s]
[INFO] redis-core ......................................... SUCCESS [4.382 s]
[INFO] redis-keeper ....................................... SUCCESS [3.646 s]
[INFO] redis-meta ......................................... SUCCESS [2.135 s]
[INFO] redis-console ...................................... SUCCESS [4.919 s]
[INFO] redis-integration-test ............................. SUCCESS [2.355 s]
[INFO] services ........................................... SUCCESS [0.346 s]
[INFO] local-service ...................................... SUCCESS [1.486 s]
[INFO] package ............................................ SUCCESS [0.908 s]
[INFO] package-redis-meta ................................. SUCCESS [3.448 s]
[INFO] redis-keeper-package ............................... SUCCESS [2.918 s]
[INFO] redis-console-package .............................. SUCCESS [2.825 s]
[INFO] ------------------------------------------------------------------------
由于服务依赖于 Zookeeper,在每个机房需要有对应的Zookeeper集群
假设目前存在两个机房:jq、oy
打包位置:redis/package/redis-console-package/target/
打包格式:zip
将此 zip 包解压缩到用户目录,假设加压缩后根目录为 console
Console 包解压缩之后,可以看到 console/sql
目录,目录下面存放数据库表结构初始化脚本: xpipedemodbtables.sql
Console 包解压缩之后,可以看到 console/sql
目录,目录下面存放数据库初始化脚本: init_data.sql
meta server依赖于console提供的机房meta信息,如果console初始化没数据,可能会导致meta server无法启动。
建议运行此脚本,进行数据初始化操作。
文件位置: console/config/xpipe.properties
重点配置项:
文件位置:console/config/datasources.xml
打包位置:redis/package/redis-metaserver-package/target/
打包格式:zip
在 jq
机房服务器解压压缩包:
文件位置: console/config/xpipe.properties
重点配置项:
- datacenter
配置当前数据中心名字 - metaserver.id
当前 meta server 的 id,支持一个数据中心多个 meta server,不同 meta server 需要对应不同 id - zk.address
当前数据中心 Zookeeper 地址 - zk.namespace
Zookeeper 命名空间 - console.address
console 地址 - dcinfos
各数据中心 meta server 地址
在 oy
机房服务器解压压缩包,基础配置项和 jq
机房类似
注意:
机房名字需要改成特定机房,
如果共享 Zookeeper,zk.namespace
需要有不同的配置。
打包位置:redis/package/redis-keeper-package/target/
打包格式:zip
支持一个数据中心多个 keeper container 服务器,只要按照如下配置方式配置好即可。
文件位置: console/config/xpipe.properties
重点配置项:
- datacenter
当前数据中心名 - meta.server.url
当前数据中心 meta server 地址 - zk.address
Zookeeper server 地址,此处 Zookeeper 地址需要和对应机房 meta server 配置的地址相同 - zk.namespace
Zookeeper 命名空间 此处命名空间需要和对应机房 meta server 配置的命名空间相同 - replication.store.dir
本地数据文件保存位置
注意:一个Keeper Container是一个容器,里面可以放多个keeper,用户只需要启动Keeper Container,Keeper由Meta Server自动增加、启动。
Keeper Container的端口参见init_data.sql
中insert into KEEPERCONTAINER_TBL
部分。
默认init_data.sql
中定义的金桥机房Keeper Container端口:
- 7080
- 7081
- 7082
默认init_data.sql
中定义的欧阳机房Keeper Container端口:
- 7180
- 7181
- 7182
否则可能会出现错误:chown: cannot access ‘’: No such file or directory
由于在启动脚本中我们会用到gun-sed,进行一些内容替换,使用前请安装gun-sed:
安装方式:
brew install gnu-sed
安装完成之后,link到gnu-sed(文件路径中的具体版本参考安装时的版本):
ln /usr/local/Cellar/gnu-sed/4.4/bin/gsed /usr/local/bin/sed
并且确认安装后的sed版本是OK的:
运行命令:sed --version
,应该可以看到如下输出:
sed (GNU sed) 4.4
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <[email protected]>.
请在 https://zookeeper.apache.org / 下载 zookeeper 3.4.8 版本
每个数据中心需要对应一个单独的Zookeeper集群
进入解压缩后的目录,运行 scripts/startup.sh
脚本
进入解压缩后的目录,运行 scripts/startup.sh
脚本
进入解压缩后的目录,运行 scripts/startup.sh
脚本
单机启动时,默认Console、Meta Server、Keeper端口会有冲突,需要将不同服务启动在不同端口。
将服务启动在特定端口方法如下:
- 建立文件夹,文件夹名格式“服务名_端口”,例如:"metaserver_9747"
- 将对应压缩包解压到上面建立的文件夹
- 运行scripts/startup.sh脚本,此脚本自动会获取路径中的端口信息,在上面的例子中为"9747"
启动后,应该能看到下面图片中红框部分,代表设置启动端口为"9747":
真正运行时,可以建立下面几个文件夹,并且将压缩包拷贝到对应目录:
- console
- metaserver_9747
- 对应dc1 metaserver
- metaserver_9748
- 对应dc2 metaserver
- keepercontainer_7080
- 对应dc1 keepercontainer
- keepercontainer_7081
- 对应dc1 keepercontainer
- keepercontainer_7082
- 对应dc1 keepercontainer
- keepercontainer_7180
- 对应dc2 keepercontainer
- keepercontainer_7181
- 对应dc2 keepercontainer
- keepercontainer_7182
- 对应dc2 keepercontainer
XPipe