# deploy-nacos-ranche2.x
#### 介紹
本項(xiàng)目描述在Rancher2.x平臺(tái)上消返,如何實(shí)現(xiàn)nacos高可用模式的部署教程皆看。在完成此項(xiàng)工作前,查閱了nacos官網(wǎng)資料盖溺,官網(wǎng)提供k8s部署的項(xiàng)目莫鸭,但無法順利部署到Ranche2.x平臺(tái)上,主要原因其鏡像在openjdk1.8版本上有些定時(shí)器無法定時(shí)觸發(fā)運(yùn)行阱高,還有無法使用外部Mysql赚导、nacos多節(jié)點(diǎn)在pod容器下無法通過容器主機(jī)名訪問,導(dǎo)致nacos無法達(dá)到集群的效果赤惊。為此吼旧,在nacos 1.1.4版本上我做了一定源代碼上的修改(具體見另一項(xiàng)目 [rancher2.x-nacos](https://gitee.com/tanks_oracle/rancher2.x-nacos.git)),主要能夠通過外部配置的參數(shù)動(dòng)態(tài)獲取對(duì)應(yīng)到ip:端口后未舟,更新至conf/cluster.conf文件圈暗,nacos應(yīng)用會(huì)自動(dòng)加載這個(gè)文件,動(dòng)態(tài)加載到節(jié)點(diǎn)列表中裕膀。??
#### 軟件架構(gòu)
#### 構(gòu)建鏡像步驟(前提本地已安裝Docker)
1.? 克隆項(xiàng)目至本地 git clone https://gitee.com/tanks_oracle/deploy-nacos-ranche2.x.git
2.? 切換到build/oracle_jdk目錄员串,執(zhí)行 docker build -t? 172.16.xxx.xx/spring_cloud/jdk:8 . (私服harbor地址自行更換)
提示:由于oracle java sdk 非常大,不太好提交到gitee上昼扛,建議自行百度下載jdk-8u151-linux-x64.tar.gz保存到build/oracle_jdk下
3.? 推送鏡像至Harbor私服 docker push 172.16.xxx.xx/spring_cloud/jdk:8
4.? 切換到build/nacos目錄寸齐,修改Dockerfile文件,將以下代碼改成自己的Harbor私服地址
```
# 基礎(chǔ)鏡像為 centos 此處改成你本地私服的鏡像地址
FROM 172.16.xxx.xx/spring_cloud/jdk:8
```
5. 構(gòu)建自定義nacos鏡像,執(zhí)行命令: docker image build --tag? 172.16.xxx.xx/spring_cloud/nacos .
6. 推行鏡像至harbor私服渺鹦,執(zhí)行命令: docker push 172.16.xxx.xx/spring_cloud/nacos:latest
#### Rancher2.x 平臺(tái)上部署nacos
1. Rancher2.x應(yīng)用商店安裝nfs-client-provisioner應(yīng)用扰法,安裝完成后系統(tǒng)會(huì)自動(dòng)創(chuàng)建生產(chǎn)存儲(chǔ)累StorageClass,配置參數(shù)如下
2. 在集群工作負(fù)載中毅厚,部署nacos集群節(jié)點(diǎn)分別為nacos-server-node0塞颁、nacos-server-node1、nacos-server-node2...,截圖:
3. 3個(gè)nacos工作負(fù)載部署完成吸耿,截圖如下
4. 在集群服務(wù)發(fā)現(xiàn)中祠锣,添加nacos-server服務(wù),截圖如下
5.若想在Rancher2.x平臺(tái)外也想使用rancher2.x內(nèi)已經(jīng)部署好的nacos集群服務(wù),可以在集群里創(chuàng)建負(fù)載均衡
nacos集群部署完后珍语,在rancher2.x里的應(yīng)用如spring boot锤岸、spring cloud竖幔、spring cloud alibaba等應(yīng)用都可以以nacos-server:8848來訪問板乙,平臺(tái)外訪問則可以通過負(fù)載均衡方式訪問,如spring cloud使用nacos配置代碼實(shí)例如下:
```
#注冊(cè)服務(wù)拳氢、配置服務(wù)
spring.application.name=main-app
spring.cloud.nacos.discovery.server-addr=nacos-server:8848
```