Rancher搭建
首先rancher需要安装了docker的linux环境,我的系统版本为
在docker的基础上启动rancher服务器,Rancher 服务器是一个 Docker image,所以其软件本身不需要安装,只需要执行 Docker 命令下载并且成功运行 Docker 服务器镜像即可。
执行命令 sudo docker run -d --restart=always -p 8080:8080 rancher/server
启动容器并指定端口,如果没有rancher/server镜像会自动下载。执行完成后查看镜像与容器运行情况:
以上步骤完成后,查看本机的ip地址,我的地址为192.1688.1.109,在浏览器输入http://ip:8080/,登录到rancher官网,为安全起见,设置管理账户
然后进行添加主机操作,根据网站指引操作,生成一条命令,在docker中运行
$ sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.5 http://192.168.1.109:8080/v1/scripts/9F78F0DF10BCF4216AC7:1483142400000:hSv7KrbGnhQy3IJmJWYhWvxemF4
会自动下载rancher/agent镜像
当在宿主机中运行完成后,网站中会显示成功添加主机
Rancher的环境
Environment在Rancher中被定义为主要用于容器编排和管理的环境,比如Dev或者TEST或者PROD环境等等。目前Rancher支持如下四种:Cattle/Kubernetes/Mesos/Swarm, Cattle是Rancher自己内置的缺省的编排环境,缺省的Default的即为Cattle类型的。
添加stack、添加、升级service、添加负载均衡、外部服务、服务别名、服务的端口绑定、服务链接、环境变量、健康检查等
在这里添加stack:myapp。为其添加服务nginx,镜像为nginx,暴露端口8888。
然后添加负载均衡,分担nginx服务的流量,在这里目标服务的端口需为镜像内部80端口,若设置为暴露出的8888端口则访问失败
通过负载均衡暴露出的端口90访问结果如下:
再添加外部服务,指向第一个nginx服务,并连接其暴露出的端口8888
然后再添加一个负载均衡,指向外部服务,暴露91端口:
访问91端口,得到同样的访问结果:
在这里注意负载均衡与外部服务的区别,负载均衡需要配置服务自身的端口,而外部服务需要为其配置其所链接服务所暴露出的端口
关于环境变量、服务链接可见接下来的部署web项目时的具体操作。
Web应用部署
添加stack webapp
为其添加服务classnet,其中为web内容以及服务器tomcat。服务镜像来自之前完成web容器化时自己所制作镜像,该镜像以上传至阿里云私有仓库。所以在添加该服务前,首先要将私有镜像仓库添加到rancher的镜像仓库:
然后添加classnet服务,暴露端口8899,通过该端口访问tomcat,测试是否添加成功:
然后添加数据库服务,在这里选择mysql镜像,除了配置端口,还需要为数据库设置环境变量,声明数据库访问的密码MYSQL_ROOT_PASSWORD与数据库名称MYSQL_DATABASE,这两个环境变量的具体值需要与web项目中的配置保持一致,具体环境变量的配置可以通过查看mysql官方镜像的说明:
再返回classnet服务,升级服务,设置服务连接,连接至mysql服务:
为网站添加负载均衡,暴露端口10086:
通过负载均衡所暴露端口访问网站主页: