本文档中主要描述如何进行双 11 抢购项目的本地运行和部署。 1、环境说明 1) 服务器配置 内存 16G+(DDR3 或以上) CPU 标准电压版 i5(3470+) 4 核单线程(双线程更好) 硬盘 500G 以上 说明:服务器指用于运行分布式微服架构项目依赖环境(如 Docker 环境)及 部署双 11 抢购项目的主机。 2) 开发机器配置 内存 8G+ CPU 标准电压版 i5+ 双核+ 硬盘 500G 以上 3) 运行及部署环境软件版本
2、本地运行环境搭建步骤 在双 11 抢购项目中,我们是由 Docker 将原有的一台服务器,隔离成为多个容器。 每一个容器部署一个双 11 抢购的服务。 双 11 抢购项目中的 Docker 应用架构如图 1 所示。 每一个长方形都代表一个 Docker 容器。
图 1:双 11 抢购项目 Docker 架构 1) 安装 Ubuntn 系统 安装完成后需要设置好固定 IP,如果需要使用 xshell 等远程连接,则需要安装 ssh 服务和解决 root 远程连接拒绝问题。 2) 安装 docker 和 shipyard 详见《Docker 入门》文档。 3) 下载基础 centos 镜像 docker pull centos 注:如果下载速度过慢,可以使用阿里云等镜像加速 4) 执行初始化脚本创建镜像 首先把 dockerfiles-master.zip 上传到 ubuntu 上并解压, 然后给目录env10.1 下的所有.sh 进行可执行权限的授权 授权:chmod 777 *.sh, 最后执行如下命令,通过 dockfile 来创建所有镜像: ./im-1.sh all n
注:脚本是全自动的运行的,不需要人工干预。但因下载内容较多,可能会因网络原因导致某些包下载失败。 如果出现资源包下载失败,首先需要确认是否下载链接地址是否已经失效。 如果下载链接失效,则需要将原来的下载链接替换成为互联网上最新的下载链接。 如果下载链接没有失效,则可按照以下步骤进行镜像的重新创建。 如果发现某个镜像创建失败,则需要单独重新创建这个镜像。单独创建镜像的命令如下: ./im-1.sh 镜像名称 n dockfile 路径 5) 执行初始化脚本创建容器,执行命令如下: ./InitContainers-2.sh init 只要之间镜像创建没有问题,生成容器基本上都没有问题,如果有问题,删除然后修改镜像,重新执行脚本创建容器。 3、相关配置和检查 在实际环境中,一般只对外暴露 80 端口访问,其余都由 nginx 代理处理, 但是在开发中为了方便调试,一般我们会开放一些端口, 比如 mysql 会设置用户名、密码及开放 3306 端口,这样就可以通过客户端远程查看; Redis 也会设置密码和开放 6379 端口,方便 Redis 客户端远程操作。 1. 配置 mysql 通过 shipyard,选择 mysql 容器
进入控制台,点击 run。
执行 mysql 配置命令,登录 mysql,修改密码,授权,测试连接
其中 grant all privileges on *.* to root@'%' identified by '123456' with grant option 命令,是设置 MySQL 可以通过远程访问的。 如果不执行这个命令,那么通过远程客户端连接失败,如下图:
在执行这个命令的过程中,可能会发生这个错误: 报找不到 grant 这个命令。 此时需要进入到 mysql 容器中,执行命令: ln -s /usr/local/mysql/bin/mysql /usr/bin,如下图:
图 7: 设置可以执行 grant 命令 然后重新通过 shipyard 进入到 MySQL 的窗口中执行,此时就可以了,然 后可以通过客户端访问,如下图:
2. 配置 Redis 可以通过客户端远程访问 1) 开放 6379 端口,执行./run.sh redis 命令,其实就是删除掉之前的 Redis容器,并启动一个容器,在新生成的容器中开放 6379 端口映射
2) Redis.conf 文件中的 bind 127.0.0.1 修改成 bind 0.0.0.0 3) Redis.conf 文件中的 protected-mode yes 修改成 protected-mode no Redis.conf 文件中修改 requirepass 123456 ,requirepass 默认是注释掉的,需要去掉,并设置密码。
4) 全部修改完成后,通过 stop、start 命令,重新启动当前容器。注意:此时不能通过 /run.sh redis 来创建容器,否则是新创建的容器,原来的修改 都被覆盖掉了,此时就能通过客户端远程连接 Redis 服务了。
注意:如果此时连接报失败,会提示失败信息:Connection error:Error communicating with HTTP proxy 这个问题是因为本地代理导致,一定要关闭掉本地 IE 浏览器代理,然后重新测试连接就没有问题了。 4、测试服务 1、配置 hosts 在开发机的 hosts 文件中配置如图 11 所示域名,其中 IP 为对应 Docker 宿主机的 IP。 注:hosts 文件中配置的域名为创建镜像时在 nginx 配置文件(dokerfiles master//src//Nginx-Tengine-2.2.1//local.com//nginx.conf)中所指定的域名
2、访问服务 打开浏览器访问配置的域名,如出现对应环境的管理界面,则代表环境部署成功。如访问 http://mq.local.com 来验证 mq 是否正常启动,正常界面如图 12 所示。
如果不能访问界面则可能服务没有启动,进入到 mq 对应的容器中的以下目录:/usr/local/apache-activemq-5.15.2/bin/ ,然后执行命令:./activemq start。 执行完成在执行命令:ps -ef |grep mq 来查看,如果显示如下则代表mq 启动成功:
标签:11,容器,抢购,Redis,文档,mysql,镜像,Docker From: https://www.cnblogs.com/cnetsa/p/16985125.html