Porter 部署教程
环境要求
- jdk
- zookeeper
- zkui(方便查看zookeeper集群的信息,没硬性要求可以不配,不影响同步功能)
- mysql
- node.js
环境配置过程
vmware安装的centos(其他Linux环境理论一样,未测试)
安装jdk(我使用的是jdk1.8)
安装zookeeper和zkui(可选)
安装node.js(port-ui需要node环境)
需要mysql服务器,porter-boot同步mysql数据采用的是canal组件(不需要安装canal,只需要在mysql中配置即可)
a.canal的原理是基于mysql binlog技术,所以要开启mysql的binlog写入功能,建议配置binlog模式为row
- windows下mysql配置文件为my.ini,一般在mysql安装目录下
- Linux下mysql的配置文件为my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找。
- Linux用rpm包安装的mysql是不会安装/etc/my.cnf文件的
解决方案: 只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。
[mysqld]
log-bin=mysql-bin #添加这一行就行
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
b.canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
源码处理
笔者用到的是idea,需要安装git,gradle
porter项目源码加载到idea
git init git clone https://github.com/sxfad/porter.git
切换到3.0.2版本
修改配置信息
- 修改porter/manager/manager-boot/src/main/resources/application.properties 数据库连接信息
#单机zookeeper配置,配置zookeeper集群只需要在url后边用逗号隔开填写多个ip即可 manager.cluster.strategy=ZOOKEEPER manager.cluster.client.url=127.0.0.1:2181 manager.cluster.client.sessionTimeout=100000 #数据库连接信息,数据库需要与初始化脚本的数据库名相同 spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/ds_data?useUnicode=true&characterEncoding=utf-8 spring.datasource.druid.username=test spring.datasource.druid.password=111111 #端口 #注意端口号要与porter-ui配置一致 server.port=8081 #log logging.file=./logs/manager-boot.log
初始化数据库:修改/porter/manager/manager-boot/src/main/resources/初始化脚本.sql
- 注意这里面的第一行"use ds_data",需要与jdbc连接信息一致
- 创建ds_data数据库,执行修改后的sql脚本
修改/porter/porter/porter-boot/src/main/resources/application.properties配置⽂件
logging.level.root=info logging.file=./logs/data-node.log logging.level.com.alibaba.druid.pool.DruidDataSource=INFO server.port=8080 #节点描述 porter.id=1 porter.gc=true #单机zookeeper配置,配置zookeeper集群只需要在url后边用逗号隔开填写多个ip即可 porter.cluster.strategy=ZOOKEEPER porter.cluster.client.url=127.0.0.1:2181 porter.cluster.client.sessionTimeout=100000 #会加载tasks/sample文件夹下的任务配置 spring.profiles.active=sample
配置警告邮件信息,运行出错会发送邮件提醒(可选)
修改⽂件/porter/porter/porter-boot/src/main/resources/application.properties
node.statistic.upload=true
构建项目
git submodule init git submodule update git submodule foreach git pull origin 版本(porter-ui与manager-boot对应的前端UI版本) // 如果发现port-ui下还是没有代码,可以输入 rm -rf port-ui删除port-ui,之后在github上重新拉取port-ui gradle build
待构建完成,拷⻉/porter/porter/porter-boot/build/distributions/porter-boot-3.0.2.tar 和/porter/manager/manager-boot/build/distributions/manager-boot-3.0.2.tar两个压缩包⾄/app/soft/porter/(看情况,⾃⼰指定)
(windows下启动需要在windows上打包,Linux执行要在Linux/mac os上打包)
@Setter注解无法通过编译
- idea 勾选 Annotation Processors
- 安装 lombok
- 查看 java compile 是否为 javac
按顺序执行前三步,如果还是build失败,则在项目根目录下的build.gradle文件中,subprojects下的dependencies中导入
annotationProcessor 'org.projectlombok:lombok:1.16.20'
配置管理UI
- 此时已经不需要单独部署port-ui,启动manager-boot-3.0.2则会自动启动port-ui
启动准备目前/app/soft/porter/⽬录下有两个项⽬:manager-boot,porter-boot
启动zokeeper,启动zkui
解压manager-boot-3.0.2.tar
解压porter-boot-3.0.2.tar
启动manager-boot
// linux ./app/soft/porter/manager-boot-3.0.2/bin/manager-boot // windows manager-boot.bat
现在浏览器输入IP:8081 admin/admin则可登录管理系统
启动porter-boot
// linux ./app/soft/porter/porter-boot.3.0.2/bin/porter-boot // windows porter-boot.bat
如果日志显示节点已经被注册则关闭porter-boot执行
./porter-boot-3.0.2/bin/porter-boot --force
恭喜,部署成功
注意: 项⽬关闭或启动出错时,请登录zkui,清除⼀下suixingpay节点的数据再启动
项⽬启动顺序建议:清理集群信息 -> 启动manager-boot -> 启动porter-boot