Appearance
nacos部署
服务器安装JDK ,Linux安装JDK8
- 下载nacos:2.0.3版本。[下载地址](Releases · alibaba/nacos · GitHub)
- 上传至虚拟机服务器
/data
- 解压:
tar -zxvf nacos-server-2.0.3.tar.gz
单机部署
nacos默认是集群部署方式,数据存储默认是内存数据库H2
方式一【修改配置文件】:
cd /data/nacos/bin
vi startup.sh
export MODE="cluster" 修改为: export MODE="standalone"
执行启动命令:./startup.sh
方式二【启动命令增加单机部署参数】:
cd /data/nacos/bin
带参数启动:./startup.sh -m standalone
查看启动效果:cat /data/nacos/logs/start.out
浏览器访问:http://192.168.1.12:8848/nacos
- 默认账号密码:
nacos/nacos
- 记得关闭虚拟机防火墙,否则访问不到8848端口
集群部署
MySQL 8安装| 黄继良 ,mysql版本需要5.7+
cd /data
mkdir nacos_cluster
cp nacos-server-2.0.3.tar.gz nacos_cluster/nacos-server-2.0.3.tar.gz
cd nacos_cluster
tar -zxvf nacos-server-2.0.3.tar.gz
mv nacos nacos8849
cd nacos8849/conf
mv cluster.conf.example cluster.conf
# 修改集群配置
vi cluster.conf
输入集群ip:port
#example
192.168.1.12:8849
192.168.1.12:8851
192.168.1.12:8853
# 使用mysql数据源,可以持久化 & 修改nacos启动端口
vi application.properties
1. server.port=8848 修改为 server.port=8849
2. 修改数据源:修改5个地方,如下图所示
# 在192.168.1.4服务器创建nacos数据库,并执行 conf/nacos-mysql.sql文件创建表结构
mkdir nacos8851
mkdir nacos8853
cp nacos8849/* nacos8851/ -r
cp nacos8849/* nacos8853/ -r
vi nacos8851/conf/application.properties
修改端口为:8851
vi nacos8853/conf/application.properties
修改端口为:8853
- 如果出现内存不足,修改启动脚本(bin/startup.sh)的jvm参数
JAVA_OPT="${JAVA_OPT} ‐server ‐Xms512m ‐Xmx512m ‐Xmn256 ‐XX:MetaspaceSize=64m ‐XX:MaxMetaspaceSize=128m"
nacos2.0+版本启动需要4个端口,所以集群部署配置的端口最好不要连续,否则启动报错《
io.grpc.netty.shaded.io.netty.channel.unix.Errors$NativeIoException: bind(..) failed: Address
》2.0需要4个端口 server.port(默认8848) raft port: ${server.port} - 1000 grpc port: ${server.port} + 1000 grpc port for server: ${server.port} + 1001
数据库安装在本地,想要虚拟机访问本地服务器,记得关闭本地防火墙,而且数据库(mysql的user表记得添加虚拟机可远程访问权限)
- 集群启动完成如下图所示
nginx安装
使用nginx代理负载轮询转发nacos集群
nginx安装教程 | 黄继良 , 一定要根据这个教程安装,因为此教程带安装了stream,如果不安装stream,nginx就无法使用stream,而nacos2.0+版本需要TCP转发才可以连接
官方说明:
nginx配置文件
使用8848端口代理http请求
端口10020代理TCP请求转发,此处配置10020端口,则在client连接nginx集群时就需要(10020-1000)= 9020 端口才可以连接得到,client连接如下图
#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;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
#gzip on;
upstream nacoscluster {
server 192.168.1.12:8849;
server 192.168.1.12:8851;
server 192.168.1.12:8853;
}
server {
listen 8848;
server_name localhost;
location /nacos/ {
proxy_pass http://nacoscluster/nacos/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
stream {
upstream nacosgrpcc {
server 192.168.1.12:9849;
server 192.168.1.12:9851;
server 192.168.1.12:9853;
}
server {
listen 10020;
proxy_connect_timeout 300s;
proxy_timeout 300s;
proxy_pass nacosgrpcc;
}
}
配置nginx代理时,不能出现特殊字符,否则访问包400 bad request错误
反例:
upstream nacos_cluster {}
nginx启动成功之后,直接访问:
http://192.168.1.12:8848/nacos