文章目录
- 一、安装Docker环境
- 1. 关闭SELINUX服务
- 2. 更新yum程序
- 3. 安装Docker
- 4. 管理Docker
- 二、搭建HBase+Phoenix大数据平台
- 2.1. 加载镜像
- 2.2. 创建容器
- 2.3. 创建逻辑库
- 2.4. 创建数据表与导入数据
- 2.5. 配置JDBC连接信息
- 三、Redis服务
- 3.1. 加载镜像
- 3.2. 配置文件
- 3.3. 创建Redis容器
- 四、RabbitMQ服务
- 4.1. 加载RabbitMQ镜像
- 4.2. 创建RabbitMQ容器
- 五、Minio服务
- 5.1. 加载RabbitMQ镜像
- 5.2. 创建minio容器
- 六、重启Linux之后的任务清单
- 七、防火墙服务
一、安装Docker环境
1. 关闭SELINUX服务
vim /etc/sysconfig/selinux
SELINUX=disabled
2. 更新yum程序
yum update -y
3. 安装Docker
yum install docker -y
4. 管理Docker
systemctl start docker
systemctl status docker
systemctl stop docker
docker images
二、搭建HBase+Phoenix大数据平台
2.1. 加载镜像
docker load < phoenix.tar.gz
2.2. 创建容器
因为镜像中已经包含和HBase和Phoenix,所以我们只需要创建出容器即可。由于HBase需要使用的内存
较大,这里我没有规定具体的内存大小,容器会自动使用空闲的内存。容器中数据目录是 /tmp/hbase-root/hbase/data ,我把这个目录映射到宿主机的 /root/hbase/data 目录。
mkdir /root/hbase/data -p
docker run -it -d -p 2181:2181 -p 8765:8765 -p 15165:15165 \
-p 16000:16000 -p 16010:16010 -p 16020:16020 \
-v /root/hbase/data:/tmp/hbase-root/hbase/data \
--name phoenix \
boostport/hbase-phoenix-all-in-one:2.0-5.0
运行命令,进入到Phoenix容器中,然后执行命令设置 HBASE_CONF_DIR 环境变量。
docker exec -it phoenix bash
export HBASE_CONF_DIR=/opt/hbase/conf/
接下来我们要连接Phoenix的命令行客户端。虽然IDEA也内置了Phoenix客户端,但是Bug挺多的,用着并不方便,所以我建议大家使用Phoenix自带的命令行客户端更好一些。而且我们要执行的SQL语句也并不多,命令行客户端已经足够用了。
/opt/phoenix-server/bin/sqlline.py localhost
2.3. 创建逻辑库
为了存储数据,我们需要像操作MySQL一样,先创建逻辑库,然后定义数据表。在Phoenix的命令行客户
端我们先来执行创建逻辑库的命令。
CREATE SCHEMA hospital;
USE hospital;
2.4. 创建数据表与导入数据
在本课程的git上面有 数据库脚本.SQL文件 ,你把这个SQL文件中的语句复制粘贴到Phoenix的命令行中执行即可。
2.5. 配置JDBC连接信息
把 hospital-api 和 patient-wx-api 两个项目的 application.yml 文件打开,确认其中JDBC数据库连接
信息。因为连接的是本地Phoenix,所以写 localhost 是可以的。但是如果你采用的是云主机部署
Phoenix,那么就要把 localhost 改成你云主机的IP地址,切记!
spring:
datasource:
driver-class-name: org.apache.phoenix.queryserver.client.Driver
url: jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF
type: com.alibaba.druid.pool.DruidDataSource
druid:
test-on-borrow: true
test-while-idle: true
max-active: 8
min-idle: 4
validation-query: SELECT 1
补充
phoenix逻辑删除恢复
docker exec -it phoenix bash
export HBASE_CONF_DIR=/opt/hbase/conf/
/opt/phoenix-server/bin/sqlline.py localhost
USE hospital;
UPSERT INTO HOSPITAL.DOCTOR("id", "status") VALUES(1,1);
UPSERT INTO HOSPITAL.DOCTOR("id", "status") VALUES(2,1);
UPSERT INTO HOSPITAL.DOCTOR("id", "status") VALUES(5,1);
三、Redis服务
3.1. 加载镜像
docker load < Redis.tar.gz
3.2. 配置文件
Redis的容器已经放在Git上面了,你把Redis镜像上传到CentOS系统里面,然后执行命令,把Redis镜像导入到Docker环境中。
在CentOS系统中创建 /root/redis/conf/redis.conf 文件,然后添加如下内容:
mkdir /root/redis/conf/ -p
vim /root/redis/conf/redis.conf
文件内容:
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 4
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
requirepass abc123456
3.3. 创建Redis容器
docker run -it -d --name redis -p 6379:6379 \
-v /root/redis/conf:/usr/local/etc/redis \
-e TZ=Asia/Shanghai \
redis:6.0.10 \
redis-server /usr/local/etc/redis/redis.conf
application.yml
spring:
redis:
database: 0
host: localhost
port: 6379
password: abc123456
jedis:
pool:
max-active: 1000
max-wait: -1ms
max-idle: 16
min-idle: 8
四、RabbitMQ服务
4.1. 加载RabbitMQ镜像
docker load < RabbitMQ.tar.gz
操作日志
[root@VM-8-5-centos ~]# docker load < RabbitMQ.tar.gz
b43408d5f11b: Loading layer [==================================================>] 65.62MB/65.62MB
23135df75b44: Loading layer [==================================================>] 15.87kB/15.87kB
fe6d8881187d: Loading layer [==================================================>] 3.072kB/3.072kB
8bc1ba4d95dc: Loading layer [==================================================>] 2.55MB/2.55MB
7399addcf24e: Loading layer [==================================================>] 85.11MB/85.11MB
2227d456a09d: Loading layer [==================================================>] 407.6kB/407.6kB
0ec8cf4045cf: Loading layer [==================================================>] 17.45MB/17.45MB
41e8478f77cd: Loading layer [==================================================>] 4.608kB/4.608kB
05bbc2fa1a80: Loading layer [==================================================>] 1.536kB/1.536kB
929c6b42cf54: Loading layer [==================================================>] 16.38kB/16.38kB
在本项目中通知消息用到了RabbitMQ技术,所以我们要把RabbitMQ容器给创建出来。由于不管什么数据库,MySQL也好、MongoDB也好,甚至说HBase,我们都无法给保存的记录设置过期时间。在一个对外运营的商业项目中,总是会有很多僵尸用户:他们常年不上线。如果我们发送系统公告消息的时候,要不要给这些人发送消息呢?当然要,但是不必永久保存。我们把公告消息发送到RabbitMQ的消息队列中,给消息设置过期时间。假如在消息过期时间,用户上线了,那么他就可以收到公告消息,并且系统会把他收到的公告消息转存到数据库中,永久保存。那些常年不上线的僵尸用户,发给他们的系统公告消息过了过期时间,会自动从RabbitMQ中删除,也不会转存到数据库中,这样我们就避免了为大量僵尸用户保存系统消息而占用海量存储存空间。
你把课程Git上面的RabbitMQ镜像文件,上传到CentOS系统中,接下来我们执行命令,往Docker中导入镜像。
4.2. 创建RabbitMQ容器
docker run -it -d --name mq \
-p 4369:4369 -p 5671:5671 -p 5672:5672 \
-e TZ=Asia/Shanghai \
rabbitmq:3.8.9
五、Minio服务
5.1. 加载RabbitMQ镜像
docker load < Minio.tar.gz
操作日志
[root@VM-8-5-centos ~]# docker load < Minio.tar.gz
ae58f1561944: Loading layer [==================================================>] 70.8MB/70.8MB
43a8e5d185ca: Loading layer [==================================================>] 81.92kB/81.92kB
2ad991be0a48: Loading layer [==================================================>] 15.95MB/15.95MB
52b25a3b80bb: Loading layer [==================================================>] 2.097MB/2.097MB
39e34e0f442e: Loading layer [==================================================>] 22.39MB/22.39MB
37bef40c374d: Loading layer [==================================================>] 109.4MB/109.4MB
d343281df384: Loading layer [==================================================>] 2.307MB/2.307MB
16a5bbe10c89: Loading layer [==================================================>] 5.632kB/5.632kB
5053d714431a: Loading layer [==================================================>] 2.048kB/2.048kB
f2d2b9b4bb61: Loading layer [==================================================>] 36.35kB/36.35kB
2dd0567cec31: Loading layer [==================================================>] 22.39MB/22.39MB
bf0dfbf72d29: Loading layer [==================================================>] 5.12kB/5.12kB
5.2. 创建minio容器
mkdir /root/minio/data -p
chmod -R 777 /root/minio/data/
docker run -it -d --name minio \
-p 9000:9000 -p 9001:9001 \
-v /root/minio/data:/data \
-e TZ=Asia/Shanghai --privileged=true \
--env MINIO_ROOT_USER=root \
--env MINIO_ROOT_PASSWORD="abc123456" \
bitnami/minio:latest
创建好容器之后,我们打开浏览器,访问 http://localhost:9001/login ,然后填写好登陆信息,就能进入Web管理画面。
在Web管理画面中,我们创建 hospital 存储桶,并且把存储桶的访问权限设定成 Public
创建存储桶hospital
为了批量向存储桶中上传文件,所以我们要借助于FTP软件(MobaXterm不支持上传文件夹,所以要用其他的FTP软件)。大家到网上下载 Filezilla 这款软件,然后连接到CentOS的22端口,就跟SSH连接一样。
把课程Git上面Minio目录中的 doctor 和 patient-wx
两个文件夹,上传到CentOS的 /root/minio/data/hospital
目录中。然后在Minio的Web管理画面中刷新一下,就能看到存储桶里面的这两个目录和里面的文件了。
chmod -R 777 /root/minio/data/
六、重启Linux之后的任务清单
使用云主机的同学,每天启动虚拟机之后,首先要运行Docker服务,然后还要把Docker里面的容器逐一运行起来,具体的指令如下:
顺便你可以运行 docker ps -a 指令看一下容器运行的状态,如果是是 Exited ,说明容器没有启动,你可以用 docker logs 容器名称 查看一下容器日志信息,找出其中的异常信息。
centos6.x
service docker start
service docker status
centos7.x
systemctl start docker
systemctl status docker
docker start phoenix
docker start redis
docker start mq
docker start minio
七、防火墙服务
6379、9000、9001、8765、15165、16000、16010、16020端口