ubuntu Docker安装部署Rancher
<h1>一、Rancher简介</h1><p>Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。主要包括服务管理,公有云节点管理,支持第三方用户权限管理,应用商店,api很是灵活,只是文档较少,让你更多的去参考官方文档。<br><br></p>
<p>中文文档:https://www.rancher.cn/docs/</p>
<p> </p>
<h2>Rancher结构</h2>
<h4>1、基础设施编排</h4>
<p>Rancher可以使用任何公有云或者私有云的Linux主机资源。Linux主机可以是虚拟机,也可以是物理机。Rancher仅需要主机有CPU,内存,本地磁盘和网络资源。从Rancher的角度来说,一台云厂商提供的云主机和一台自己的物理机是一样的。<br>Rancher为运行容器化的应用实现了一层灵活的基础设施服务。Rancher的基础设施服务包括网络, 存储, 负载均衡, DNS和安全模块。Rancher的基础设施服务也是通过容器部署的,所以同样Rancher的基础设施服务可以运行在任何Linux主机上。</p>
<h4>2、容器编排与调度</h4>
<p>很多用户都会选择使用容器编排调度框架来运行容器化应用。Rancher包含了当前全部主流的编排调度引擎,例如Docker Swarm, Kubernetes, 和Mesos。同一个用户可以创建Swarm或者Kubernetes集群。并且可以使用原生的Swarm或者Kubernetes工具管理应用。<br>除了Swarm,Kubernetes和Mesos之外,Rancher还支持自己的Cattle容器编排调度引擎。Cattle被广泛用于编排Rancher自己的基础设施服务以及用于Swarm集群,Kubernetes集群和Mesos集群的配置,管理与升级。</p>
<h4>3、应用商店</h4>
<p>Rancher的用户可以在应用商店里一键部署由多个容器组成的应用。用户可以管理这个部署的应用,并且可以在这个应用有新的可用版本时进行自动化的升级。Rancher提供了一个由Rancher社区维护的应用商店,其中包括了一系列的流行应用。Rancher的用户也可以创建自己的私有应用商店。</p>
<h4>4、企业级权限管理</h4>
<p>Rancher支持灵活的插件式的用户认证。支持Active Directory,LDAP, Github等 认证方式。 Rancher支持在环境级别的基于角色的访问控制 (RBAC),可以通过角色来配置某个用户或者用户组对开发环境或者生产环境的访问权限。</p>
<p>下图展示了Rancher的主要组件和功能:</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190902183045433-1082499091.jpg" alt=""></p>
<p> </p>
<p> </p>
<h2>Rancher的特性</h2>
<h4>1、采用图形化方式</h4>
<p>易用的Web管理界面,在Docker易用性的基础上,再一次降低了使用容器技术部署容器应用的难度。</p>
<h4>2、支持多种调度器</h4>
<p>通过环境模板,很容易地创建和部署Cattle、Swarm、K8S、Mesos容器集群管理调度平台。</p>
<h4>3、管理主机集群</h4>
<p>管理对象是多台主机的集群,而不仅仅是单台容器主机,创建和管理几台、几十台应用服务器集群,只需要Ctrl+C、Ctrl+V,复制粘贴就解决了。</p>
<h4>4、内置应用商店</h4>
<p>使用其中的WordPress模板,创建一个WordPress博客系统,只需点点鼠标,部署难度不高于申请一个免费的电子邮箱!</p>
<h4>5、资源弹性分配</h4>
<p>内置应用负载均衡器,“服务”最小只需1个容器实例,当负载不够/或过剩时,只需点点鼠标,增加/减少“服务”中容器的实例数,即可解决问题,应用系统具有天生的弹性扩容能力。</p>
<p> </p>
<h1>二、安装Rancher服务器</h1>
<p>关于硬件要求,请参考官方链接:</p>
<p>https://www.rancher.cn/docs/rancher/v2.x/cn/install-prepare/requirements/</p>
<p> </p>
<h2>环境介绍</h2>
<table border="0" align="left">
<tbody>
<tr>
<td>操作系统</td>
<td>ip</td>
<td>docker版本</td>
<td>角色</td>
</tr>
<tr>
<td>ubuntu-16.04.4-server-amd64</td>
<td>192.168.10.104</td>
<td>Docker 18.09.2</td>
<td>rancher-server</td>
</tr>
<tr>
<td>ubuntu-16.04.4-server-amd64</td>
<td>192.168.10.108</td>
<td>Docker 18.09.2</td>
<td>rancher-agent</td>
</tr>
</tbody>
</table>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>注意:2台服务器已经安装好docker了!</strong></span></p>
<h2>安装Rancher主机</h2>
<p>在安装server之前,我们先配置一下阿里云的docker镜像加速地址,否则镜像的下载会很慢:</p>
<div class="cnblogs_code">
<pre>vim /etc/docker/daemon.json</pre>
</div>
<p>内容如下:</p>
<div class="cnblogs_code">
<pre>{<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">registry-mirrors</span><span style="color: rgba(128, 0, 0, 1)">"</span>: [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://xwx6wxd1.mirror.aliyuncs.com</span><span style="color: rgba(128, 0, 0, 1)">"</span>]}</pre>
</div>
<p> </p>
<p>重新加载docker</p>
<div class="cnblogs_code">
<pre>/etc/init.d/docker reload</pre>
</div>
<p> </p>
<p>创建数据库挂载目录</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">mkdir</span> -p /data/rancher_server/mysql</pre>
</div>
<p> </p>
<p>推荐数据库数据外置。即使容器坏了,数据还在,重新再建一个容器即可</p>
<div class="cnblogs_code">
<pre>docker run -d -v /data/rancher_server/mysql:/var/lib/mysql --restart=always -p <span style="color: rgba(128, 0, 128, 1)">8080</span>:<span style="color: rgba(128, 0, 128, 1)">8080</span> rancher/server</pre>
</div>
<p> </p>
<p>查看运行情况</p>
<div class="cnblogs_code">
<pre>root@ubuntu:~# <span style="color: rgba(255, 0, 0, 1)">docker ps</span><span style="color: rgba(0, 0, 0, 1)">
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
27e65bb6ae54 rancher</span>/server <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/usr/bin/entry /usr…</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">45</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">45</span> minutes <span style="color: rgba(128, 0, 128, 1)">3306</span>/tcp, <span style="color: rgba(128, 0, 128, 1)">0.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.0</span>:<span style="color: rgba(128, 0, 128, 1)">8080</span>-><span style="color: rgba(128, 0, 128, 1)">8080</span>/tcp hopeful_rosalind</pre>
</div>
<p> </p>
<p>查看日志</p>
<div class="cnblogs_code">
<pre>root@ubuntu:~# <span style="color: rgba(255, 0, 0, 1)">docker logs -</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)">f fbac96ddb14c</span>
Running mysql_install_db...
...
</span><span style="color: rgba(0, 0, 255, 1)">time</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2019-09-03T07:33:40Z</span><span style="color: rgba(128, 0, 0, 1)">"</span> level=<span style="color: rgba(0, 0, 255, 1)">info</span> msg=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Listening on :8090</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 0, 255, 1)">time</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2019-09-03T07:33:43Z</span><span style="color: rgba(128, 0, 0, 1)">"</span> level=<span style="color: rgba(0, 0, 255, 1)">info</span> msg=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Waiting for machinedriver.activate event</span><span style="color: rgba(128, 0, 0, 1)">"</span> service=<span style="color: rgba(0, 0, 0, 1)">gms
...</span></pre>
</div>
<p>当出现 <span style="color: rgba(255, 0, 0, 1)">Listening on :8090</span> 表示启动成功了</p>
<p> </p>
<p>查看rancher服务监听端口</p>
<div class="cnblogs_code">
<pre>root@ubuntu:~# netstat -antupl | <span style="color: rgba(0, 0, 255, 1)">grep</span> <span style="color: rgba(128, 0, 128, 1)">8080</span><span style="color: rgba(0, 0, 0, 1)">
tcp6 </span><span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(128, 0, 128, 1)">0</span> :::<span style="color: rgba(128, 0, 128, 1)">8080</span> :::* LISTEN <span style="color: rgba(128, 0, 128, 1)">5563</span>/docker-proxy</pre>
</div>
<p> </p>
<p>访问测试</p>
<div class="cnblogs_code">
<pre>http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">192.168.10.104:8080</span></pre>
</div>
<p> 效果如下:</p>
<p>点击右下角的<span style="color: rgba(255, 0, 0, 1)">Deutsch</span>,选择语言,选择中文</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903153906395-1311601812.png" alt=""></p>
<p> </p>
<p> </p>
<p>中文效果如下:</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903153926174-804880056.png" alt=""></p>
<p> </p>
<p> </p>
<h1><strong>三、Rancher 服务器配置</strong></h1>
<h2><strong>添加账号</strong></h2>
<p>首次登录,还没有配置访问权限,为了安全期间,首先点击上面的 <span style="color: rgba(255, 0, 0, 1)">系统管理</span>--><span style="color: rgba(255, 0, 0, 1)">访问控制</span> 来新建一个本地账号和密码。</p>
<p> <img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903154256475-1023789175.png" alt=""></p>
<p> </p>
<p> </p>
<p>选择Local,输入用户名和密码</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903154439986-1309528361.png" alt=""></p>
<p> </p>
<p> </p>
<p>点击启用本地验证。</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903154511952-1506792513.png" alt=""></p>
<p> </p>
<p> </p>
<p>提示已经启用了</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903154537124-876152997.png" alt=""></p>
<p> </p>
<p> </p>
<h1>四、添加主机</h1>
<p>点击 <span style="color: rgba(255, 0, 0, 1)">基础架构</span>--><span style="color: rgba(255, 0, 0, 1)">主机</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903154702524-1779265726.png" alt=""></p>
<p> </p>
<p> </p>
<p>添加主机</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903154742365-368410720.png" alt=""></p>
<p> </p>
<p> </p>
<p>直接点击<span style="color: rgba(255, 0, 0, 1)">保存</span></p>
<p> <img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903154803213-911405961.png" alt=""></p>
<p> </p>
<p> </p>
<p>copy这段命令</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903154901714-1966665981.png" alt=""></p>
<p> </p>
<p> </p>
<p>登录到 192.168.10.108这台机器,也就是rancher-agent </p>
<p>在安装agent之前,我们先配置一下阿里云的docker镜像加速地址,否则镜像的下载会很慢:</p>
<div class="cnblogs_code">
<pre>vim /etc/docker/daemon.json</pre>
</div>
<p>内容如下:</p>
<div class="cnblogs_code">
<pre>{"registry-mirrors": ["https://xwx6wxd1.mirror.aliyuncs.com"]}</pre>
</div>
<p> </p>
<p>重新加载docker</p>
<div class="cnblogs_code">
<pre>/etc/init.d/docker reload</pre>
</div>
<p> </p>
<p>运行加入命令,<span style="color: rgba(255, 0, 0, 1)">注意:每个环境,命令是不一样的。请以页面显示为主。</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">sudo</span> docker run --<span style="color: rgba(0, 0, 255, 1)">rm</span> --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.<span style="color: rgba(128, 0, 128, 1)">2.11</span> http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">192.168.10.104:8080/v1/scripts/89EA1D52A25C98723969:1546214400000:XODniKMfCrisNwBj3gF24syj0</span></pre>
</div>
<p> </p>
<p>页面再次点击<span style="color: rgba(255, 0, 0, 1)">基础架构</span>--><span style="color: rgba(255, 0, 0, 1)">主机</span>,就会看到新加入的主机</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903155405117-118664289.png" alt=""></p>
<p> </p>
<p> </p>
<p> 注:说明agent-1节点添加成功!有多少个节点就添加几个,节点添加方式和agent-1的添加方式一样,就不多说了,只不过执行命令时,是在不同ip的节点主机上!切记每次点击添加主机生成的rancher注册脚本只限于一个节点,不能多个节点重复使用一个脚本。</p>
<p> </p>
<h1>五、添加容器</h1>
<p>创建个nginx容器测试一下,点击 <span style="color: rgba(255, 0, 0, 1)">基础架构</span>--><span style="color: rgba(255, 0, 0, 1)">容器</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903155648387-377498267.png" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<p>点击添加容器</p>
<p> <img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903155718672-732072726.png" alt=""></p>
<p> </p>
<p> </p>
<p> 输入名称,镜像名,以及端口号</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903155906005-1405776927.png" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<p>下面的,基本上,保持不变,点击保存。</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903160029344-54623577.png" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<p>等待30秒,容器就运行起来了</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903160123752-1067321705.png" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<p>登录到agent服务器,查看nginx进程。</p>
<div class="cnblogs_code">
<pre>root@ubuntu:~# <span style="color: rgba(255, 0, 0, 1)">docker ps|grep</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)"> nginx</span>
26478f808e4e nginx:latest </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/.r/r nginx -g 'dae…</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(128, 0, 128, 1)">2</span> minutes ago Up <span style="color: rgba(128, 0, 128, 1)">2</span> minutes r-nginx-6d0e2e27</pre>
</div>
<p> </p>
<p>使用agent ip加端口80,就可以访问页面了</p>
<div class="cnblogs_code">
<pre>http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">192.168.10.108/</span></pre>
</div>
<p> </p>
<p>效果如下:</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903160414257-1944317006.png" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<h1>六、rancher 应用商店使用</h1>
<p>rancher 的应用商店是它的核心功能。通过应用商店,只需要2步界面操作就可以完成一个应用的部署。</p>
<p>点击应用商店,这里以部署Alfresco为例,点击查看详情</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903160531580-1158395858.png" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<p>保持默认参数,点击启动</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903160638110-1821403310.png" alt=""></p>
<p> </p>
<p> 等待几分钟,就会变成Active状态,点击8080端口,会打开一个新的窗口</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903161430583-1950551855.png" alt=""></p>
<p> </p>
<p> </p>
<p>新窗口效果如下:</p>
<p><img src="https://img2018.cnblogs.com/blog/1341090/201909/1341090-20190903161523503-1487193149.png" alt=""></p>
<p> </p>
<p> </p>
<p>注意:如果是首次创建,agent 需要花几分钟下载镜像,具体耗时取决于网速。</p>
<p>相信聪明的朋友已经猜到了。应用商店除了官方自带的应用,我们自己也可以配置自己的应用商店哦。以后临时部署一个新的测试服务,直接2步解决。</p>
<p> </p>
<h2 id="更多">更多</h2>
<p>除了这些基本功能,rancher 还有很多功能。基础的有容器日志查看、shell 访问、资源占用监控等,扩展的还有多环境管理、多主机服务部署管理等。同时对容器的各种操作,也都可以通过 rancher-cli 、 rancher-compose 命令行工具或者其自带的 http api 进行控制。</p>
<p>扩展一下,还可以通过容器替换+http api 调用,做到快速重置数据库数据的效果(数据库数据内容事先放好到镜像中)。这对于一些经常需要 清空-重新初始化数据库的操作(例如跑自动化测试前重置数据库),可以节省下不少初始化数据耗费的时间。同时,数据库数据也通过镜像的版本管理,初步获得了版本管理。</p>
<p> </p>
<p>本文参考链接:</p>
<p>https://blog.51cto.com/13043516/2299949</p>
<p>https://www.cnblogs.com/YatHo/p/7851758.html</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/xiao987334176/p/11448248.html
頁:
[1]