安装nacos并配置集群模式
先安装mysql,然后启动,建议mysql版本是5.6.5以上版本,官网要求的
安装 docker pull nacos/nacos-server:2.0.3
依次启动3台nacos
docker run -d -e PREFER_HOST_MODE=hostname -e MODE=cluster -e NACOS_APPLICATION_PORT=8846 -e NACOS_SERVERS="127.0.0.1:8846 127.0.0.1:8847 127.0.0.1:8848" -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=192.168.254.2 -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=a -e MYSQL_SERVICE_DB_NAME=nacos_config -e NACOS_SERVER_IP=127.0.0.1 -p 8846:8846 --name my-nacos1 nacos/nacos-server:2.0.3
docker run -d -e PREFER_HOST_MODE=hostname -e MODE=cluster -e NACOS_APPLICATION_PORT=8847 -e NACOS_SERVERS="127.0.0.1:8846 127.0.0.1:8847 127.0.0.1:8848" -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=192.168.254.2 -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=a -e MYSQL_SERVICE_DB_NAME=nacos_config -e NACOS_SERVER_IP=127.0.0.1 -p 8847:8847 --name my-nacos2 nacos/nacos-server:2.0.3
docker run -d -e PREFER_HOST_MODE=hostname -e MODE=cluster -e NACOS_APPLICATION_PORT=8848 -e NACOS_SERVERS="127.0.0.1:8846 127.0.0.1:8848 127.0.0.1:8848" -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=192.168.254.2 -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=a -e MYSQL_SERVICE_DB_NAME=nacos_config -e NACOS_SERVER_IP=127.0.0.1 -p 8848:8848 --name my-nacos3 nacos/nacos-server:2.0.3
安装nginx实现动态路由
docker pull nginx:1.21.1
先简单启动,执行docker run --name nginx-1.21.1 -p 80:80 -d nginx:1.21.1
然后进入服务窗口,cat /etc/nginx/conf.d/default.conf 复制一份default.conf到本地磁盘上,
文件内容 #新增表示新添加的
#新增
upstream cluster{
server 主机ip:8846;
server 主机ip:8847;
server 主机ip:8848;
}
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
#新增,转向集群配置
location /nacos {
proxy_pass http://cluster;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
以挂载配置文件的方式启动nginx,先移除nginx,再执行
docker run --name nginx-1.21.1 -p 80:80 -v D:/DevelopmentTools/nginx/log:/var/log/nginx -v D:/DevelopmentTools/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx:1.21.1
启动后访问http://localhost:80/nacos
两个问题
nacos启动报错No DataSource set
MYSQL_SERVICE_HOST=主机ip是主机ip,而不是127.0.0.1或者localhost,在docker中的服务127.0.0.1或者localhost都表示的是docker虚拟环境的ip,而不是windows的主机ip,所以我们要找到本地的主机ip,cmd进来命令窗口输入IPCONFIG回车找到IPv4
http://localhost:80/nacos访问报错[error] 25#25: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: localhost, request: “GET /nacos HTTP/1.1”, upstream: “http://127.0.0.1:8848/nacos”, host: “localhost”
问题所在和上面的一样
upstream cluster{
server 主机ip:8846;
server 主机ip:8847;
server 主机ip:8848;
}
还是一样要主机ip,而不是127.0.0.1或者localhost