Docker前后端分离实战之搭建Redis集群和前后端分离

375 阅读3分钟

·Redis是Wmware开发的开源免费的KV型NoSQL缓存产品

·Redis具有很好的性能,最多可以提供10万次/秒的读写

·目前新浪微博团队组建了世界上最大规模的Redis集群

·高速缓存利用内存保存数据,读写速度远超硬盘

·高速缓存可以减少I/O操作,降低I/O压力

1. Redis目前的集群方案分为以下几种:

o 1.RedisCluster:官方推荐,没有中心节点

o 2.Codis:中间件产品,存在中心节点

o 3.Twemproxy:中间件产品,存在中心节点

2. RedisCluster

3. 无中心节点,客户端与redis节点直连,不需要中间代理层

4. 数据可以被分片存储(切分存储)

5. 管理方便,后续可自行增加或摘除节点

6. 主从同步

7. Redis集群中的数据库复制是通过主从同步来实现的

8. 主节点(Master)把数据分发给从节点(Slave)

9. 主从同步的好处在于高可用,Redis节点有冗余设计

10. 高可用

11. Redis集群中应该包含奇数个Master,至少应该有3个Master

12. Redis集群中每个Master都应该有Slave

·解除docker集群

·docker swarm leave -f

导入本地Redis镜像文件,运行Redis容器

配置Redis文件

AOF是开启日志功能

安装redis-trib.rb

redis-trib是基于Ruby的Redis集群命令行工具

·cp /usr/redis/src/redis-trib.rb

·cd /usr/redis/cluster

·apt-get isntall ruby

·apt-get isntall rubygems

·gem install redis

利用redis-trib.rb创建Redis集群

参数表示为每个主节点创建一个从节点

·./redis-trib.rb create --replicas 1 172.190.2:6379 172.19.0.3:6379 172.1904:6379 172.19.0.5:6379 172.19.0.6:6379 172.19.07:6379

renren-fast包含了tomcat.jar文件,所以工程打包成JAR文件就能独立运行

·修改数据库配置文件(数据源,redis集群 tomcat端口)

·doker禁止跨网段访问,解决方案是把java所在容器的网络对接到宿主机上,不再专门划分网段

·利用Maven打包工程

o mvn clean install -Dmaven.test.skip=true:代表跳过测试代码

o clean:表示清除之前的JAR文件;

o install:意味着打包到本地;

o Dmaven.test.skip=true:代表跳过测试代码

·创建j1卷docker volume create j1

·运行Java容器,部署并运行JAR文件

·docker run -it -d --name j1 -v j1:/home/soft(jar文件所在位置) --net=host java

·docker exec -it j1 bash

·nohup java -jar /home/soft/renren-fast.jar

其他节点也是类似过程,不过tomcat端口要递增

·创建j2卷docker volume create j2

·运行Java容器,部署并运行JAR文件

·docker run -it -d --name j2 -v j2:/home/soft(jar文件所在位置) --net=host java

·docker exec -it j2 bash

·nohup java -jar /home/soft/renren-fast.jar

Nginx是性能非常出色的反向代理服务器,最大可以支持8万/秒的并发访问

·docker pull nginx

·启动(数据卷只能实现目录与目录之间的映射,不能实现文件与文件之间的映射)

·docker run -it -d --name n1 -v /home/n1/nginx.conf:/etc/nginx/nginx.conf --net=host --privileged nginx

·docker exec -it n1 bash

·apt-get update

·apt-get install keepalived

·vi /etc/keepalived/keepalived.conf

·网卡填写宿主机的网卡,定义虚拟节点

·service keepalived start

·ping 192.168.99.151 测试是否成功

·docker exec -it n2 bash

·apt-get update

·apt-get install keepalived

·vi /etc/keepalived/keepalived.conf

·网卡填写宿主机的网卡,定义虚拟节点(这里real_server要换成n2的端口)

·service keepalived start

·ping 192.168.99.151 测试是否成功

另一个节点略。
VM虚拟机对keepalive的支持不好(挂起虚拟机有影响,需要重启)

·docker-machine

·docker-compose

·docker-swarm

·docker swarm init

·–listen-addr ip:port 管理者节点

·–advertise-addr ip 广播地址

·docker warm join-token manager

·docker swarm join-token worker

·添加manager或者worker节点到集群,只要执行对应的命令即可

·docker node ls 只可以在Manager节点执行该命令