1、部署架构图
2、NACOS简介
2.1分布式注册中心、配置中心、管理中心;
2.2动态服务发现,服务配置,服务元数据和流量管理;
2.3以简单、优雅、高效的方式管理配置,实现配置的动态变更,大大降低运维成本;
3、使用场景
3.1数据库连接信息等敏感信息,降低因源码暴露导致数据泄露的风险;
3.2网站运营活动数据利用NACOS做动态配置;
3.3 系统服务参数限制方面,可以用NACOS做动态配置;
4、软件环境
4.1软件版本
组件 |
版本 |
JDK |
1.8.0_181 |
NACOS |
1.2.0 |
NGINX |
1.16.1 |
MYSQL |
5.7.30 |
4.2软件部署位置
节点类型 |
服务器系统 |
IP地址 |
部署服务位置 |
服务器A |
centos7.8 |
192.168.0.7 |
/home/nacos/ |
/usr/java/jdk1.8 |
|||
服务器B |
centos7.8 |
192.168.0.8 |
/home/nacos/ |
/usr/java/jdk1.8 |
|||
服务器C |
centos7.8 |
192.168.0.9 |
/home/nacos/ |
/usr/java/jdk1.8 |
|||
/usr/local/nginx/ |
|||
/usr/local/mysql/ |
5、软件部署
5.1上传JDK、NACOS、NGINX、MySQL部署包到服务器;
5.2、配置JDK环境(3台)
使用rpm -qa | grep java 指令查看服务器是否安装过jdk,这里一般用于卸载openjdk,
[root@hudi1 ~]# rpm -qa|grep java
5.2.1、openjdk卸载----卸载指令:
[root@hudi1 ~]# rpm -e --nodeps +安装包名 卸载
使用这一行命令也可以卸载
[root@hudi1 java]# rpm -qa | grep jdk
查看openjdk是否卸载干净
当显示为空时则表示系统自带的openjdk卸载干净了
5.2.2、在/usr/创建java目录
把jdk-8u181-linux-x64.tar.gz 部署包放到/usr/java/目录下
执行解压指令
tar -xvf jdk-8u181-linux-x64.tar.gz 将jdk部署包解压到该目录下
修改包名 执行
5.2.3、配置JDK环境 vim /etc/profile
在profile文件的最下面添加
#jdk环境配置
export JAVA_HOME=/usr/java/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
配置完成后执行source /etc/profile/使得配置生效
5.2.4、JDK安装校验
使用java -version 查看jdk环境是否生效,显示如下结果则jdk环境配置成功。
[root@hadoop2 usr]# java -version
5.3 MySQL部署(192.168.0.9)
5.3.1、查看系统是否安装了MySQL数据库
如果Linux中安装了mariadb数据库,先卸载掉,因为CentOS 7.6 内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb;
5.3.1.1 查看系统是否安装了mariadb数据库(MySQL开源分支库)
[root@hudi1 ~]# rpm -qa |grep mariadb
5.3.1.2 卸载mariadb数据库
[root@hudi1 ~]# rpm -e --nodeps mariadb-5.5.68-1.el7.x86_64
[root@hudi1 ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
5.3.2、解压mysql-5.7.30-linux-glibc2.12-x86_64.tar
执行指令:
[root@hudi3 local]# tar -xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar
解压后生成2个.gz包
1)、mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
2)、mysql-test-5.7.30-linux-glibc2.12-x86_64.tar.gz
[root@hudi3 local]# tar -xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
修改包名
[root@hudi3 local]# mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql
5.3.3、在/usr/local/mysql目录下创建data目录
[root@hudi1 ~]# mkdir -vp /usr/local/mysql/data (v表示创建新目录都显示信息,p表示递归创建)
添加mysql用户及用户组
groupadd mysql
useradd mysql -g mysql (-g: 是指定用户所在组)
5.3.4、初始化MySQL数据库
切换到/usr/local/mysql/bin目录下执行:根据自己的MySQL目录修改成对应的目录
[root@hudi1 bin]# ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
5.3.5、记住初始化密码,或者重新开启一个终端,使用初始化密码登录mysql
登录进入mysql,在/usr/local/mysql/bin目录下执行命令:
[root@hudi1 bin]# ./mysql -uroot -p
修改数据库初始化密码
mysql> alter user 'root'@'localhost' identified by '123456'; (修改密码自行定义遵循密码设置规则包含大小写数字及特殊字符)
查看数据库
mysql> show databases;
切换至mysql数据库
mysql> use mysql
mysql> select host,user,authentication_string,plugin from user;
5.3.6、设置mysql.server
[root@hudi1 bin]# cd ../support-files
[root@hudi1 support-files]# cp mysql.server /etc/init.d/mysqld
[root@hudi1 support-files]# vim /etc/init.d/mysqld
修改以下内容:
5.3.7、更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
[root@hudi1 local]# chown -R mysql:mysql /usr/local/mysql
[root@hudi1 local]# chmod -R 755 /usr/local/mysql
5.3.8、在mysql/data 目录下创建my.cnf文件
使用命令:
[root@hudi1 data]# vim my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8
[mysqld]
port = 3306
socket = /tmp/mysql.sock
datadir = /usr/local/mysql/data
#开启binlog
#server-id=1
#log-bin=/usr/local/mysql/data/mysql-bin
#binlog_format = ROW
log-error = /usr/local/mysql/data/hudi3.err
pid-file = /usr/local/mysql/data/hudi3.pid
character-set-server =utf8
#是否忽略大小写,unix下lower_case_table_names默认值为 0 .Windows下默认值是 1(名称比较对大小写不敏感) .Mac OS X下默认值是 2 .
lower_case_table_names = 1
#是否自动提交 0表示不自动提交 1表示自动提交,mysql事务支持的引擎是InnoDB,默认情况下autocommit的值为1
autocommit = 1
至此MySQL安装完成;
5.3.9、MySQL常用命令
[root@hudi1 bin]# /etc/init.d/mysqld start #MySQL启动
[root@hudi1 bin]# /etc/init.d/mysqld stop #MySQL停止
[root@hudi1 bin]# /etc/init.d/mysqld restart #MySQL重启
5.3.10 设置Mysql开机自启
5.3.10.1.将服务文件拷贝到init.d下,并重命名为mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
5.3.10.2.赋予可执行权限
[root@hudi3 data]# chmod +x /etc/init.d/mysqld
5.3.10.3.添加服务
[root@hudi3 data]# chkconfig --add mysqld
5.3.10.4.显示服务列表
[root@hudi3 data]# chkconfig --list
注:如果看到mysql的服务,并且3,4,5都是开的话则成功,如果是关,则
chkconfig --level 345 mysqld on
5.4 NACOS集群部署
5.4.1 解压安装包
[root@hudi3 opt]# tar -zxf nacos-server-1.2.0.tar.gz #解压安装包
[root@hudi3 opt]# ll
5.4.2 初始化nacos数据库
将/nacos/conf/nacos-mysql.sql导入MySQL中
5.4.3 配置数据库连接
找到
# 表明用MySQL作为后端存储
pring.datasource.platform=mysql
#数据库实例数量
db.num=1
#数据库实例链接地址
db.url.0=jdbc:mysql://192.168.0.9:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root #数据库用户名
db.password=123456 #数据库密码
5.4.4 主机规划
节点 |
端口 |
192.168.0.7 |
8860 |
192.168.0.8 |
8850 |
192.168.0.9 |
8848 |
5.4.4.1将安装包分发到3台服务器/home/目录下(多台服务器可以选择默认不做这一步)
将/home/nacos/conf/application.properties 中的server.port分别修改成
server.port=8860 #192.168.0.7服务器
server.port=8850 #192.168.0.8服务器
server.port=8848 #192.168.0.9服务器
5.4.5 集群搭建
5.4.5.1集群配置文件修改
将/home/nacos/conf/cluster.conf.example 拷贝一份出来
[root@hudi3 conf]# cp cluster.conf.example cluster.conf
在该文件下添加如下内容:(可以修改一份数据后使用scp命令将该文件分发到/home/nacos/conf目录下)
192.168.0.7:8860
192.168.0.8:8850
192.168.0.9:8848
5.4.5.2修改启动脚本
修改bin目录下的startup.sh文件,有四处地方需要修改。
5.4.5.2.1、修改前(添加端口启动配置):
修改后:
5.4.5.2.2、修改前:
修改后:
5.4.5.2.3、修改前:(最下面添加倒数第二行添加-Dserver.port=${PORT}):
修改后:
5.4.5.2.4、修改启动内存大小,这里默认是2g2g1g,我们启动的时候可能会报内存不足异常(根据实际需要做调整,本次没做修改)
全部改为256m:
其他两台做同样修改配置
5.4.6集群启动
分别在各服务器/home/nacos/bin目录下执行
[root@hudi3 bin]# ./startup.sh -p 8848
[root@hudi1 bin]# ./startup.sh -p 8860
[root@hudi2 bin]# ./startup.sh -p 8850
5.4.7 Web页面访问验证
http://192.168.0.9:8848/nacos/
http://192.168.0.8:8850/nacos/
http://192.168.0.7:8860/nacos/
5.4.7.1 集群管理
可以查看到192.168.0.8服务器状态为leader
现在我们先停止leader服务器的NACOS查看该集群是否会重新选举出新的leader
[root@hudi2 bin]# ./shutdown.sh
我们可以在集群管理中看到该集群中192.168.0.8服务器的NACOS已经没有了,该集群重新选择了leader管理集群。
重启192.168.0.8服务器的NACOS服务
我们可以查看到192.168.0.8服务器的NACOS服务已经重新回到了集群监控中。
5.5 NGINX安装
NGINX安装实现NACOS服务的负载均衡
5.5.1、使用SCP工具上传nginx-1.16.1.tar.gz安装包到/usr/local/目录
5.5.2安装 (该步骤在有网络的条件下可以执行,离线安装可以配置yum源后安装或下载安装包上传安装)
5.5.3安装依赖
[root@hudi3 ~]# yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
5.5.4解压安装包
[root@hudi3 local]# tar zxvf nginx-1.16.1.tar.gz
切换到解压后nginx-1.16.1目录下
[root@hudi3 local]# cd nginx-1.16.1
5.5.4.1编译
切换到解压后nginx-1.16.1目录下
[root@hudi3 local]# cd nginx-1.16.1
[root@hudi3 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx
指令说明./configure --prefix=PATH:指定nginx的安装目录。默认 /usr/local/nginx
5.5.4.2 编译安装
[root@hudi3 nginx-1.16.1]# make && make install
当编译完成后看到nginx目录下已经有了sbin目录基本上nginx已经编译安装成功了
5.5.4.3编辑配置文件 nginx.cnf
在/usr/local/nginx/conf目录下
[root@hudi3 conf]# vim nginx.cnf
nginx.cnf内容如下:配置只需按照如下文件加粗标红修改成服务器对应内容
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#keepalive_timeout 0;
keepalive_timeout 65;
#nacos集群负载均衡
upstream nacos-cluster {
server 192.168.0.9:8848;
server 192.168.0.8:8850;
server 192.168.0.7:8860;
}
server {
listen 8648;
server_name localhost;
location / {
proxy_pass http://nacos-cluster;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
5.5.4.4 查看nginx.conf配置文件是否配置正确
[root@hudi3 sbin]# ./nginx -t
5.5.4.5 启动nginx
[root@hudi3 sbin]# ./nginx
5.5.4.6查看nginx版本----必须使用完整路径
[root@hudi3 sbin]# ./nginx -V
5.5.4.7验证是否安装成功
[root@hudi3 sbin]# netstat -naltp | grep nginx
5.5.4.8关闭防火墙
[root@hudi3 sbin]# systemctl stop firewalld.service
打开浏览器-->域名栏中输入自己ip地址 安装成功会显示:
5.5.4.9nginx服务启动、停止、重启命令
//启动nginx服务
[root@hudi3 sbin]# ./nginx
//停止nginx服务
[root@hudi3 sbin]# ./nginx -s stop
//重启nginx服务
[root@hudi3 sbin]# ./nginx -s reload
//也可用systemctl对nginx启动关闭
现在我们可以通过访问链接:http://192.168.0.9:8648/nacos/
来访问nacos服务注册中心了。