SpringCloud入门系列0-Nacos的安装与配置
背景
工作有一些年头了,自从19年初彻底转了java(这又是另一篇心酸的故事),突然感觉自己荒废了好几年(不是说.net不好,而是回顾自己这几年做的很多东西都浮于表面,有时候弄成很忙的样子,回头看看自己以前写的博客,竟然很多是关于js的,真是感觉浪费时间,在此也奉劝各位老铁,做后端就好好深入做,不要分太多心到前端上,并不会给自己加分,当然全职转前端的除外)
(路人甲:扯蛋一个顶俩,能不能赶紧说技术?)
OKOK,书接上回,西门庆刚刚脱掉....你们想听这个我偏偏不说,其实是最近团队内部要重构一个服务业务,时间不那么紧张,架构搭建由本人负责,没有强制要求用什么实现,用微服务说实话挺没底的,但是时间又比较充裕,所以还是决定硬着头皮上一波(路人乙:波在哪里??要扯淡能不能专业点?最好带黄图的那种)
本系列的目的主要是交流和记录,希望本系列结束的时候可以让您的工资翻一倍(前提是你工资只有3K啊:))
万事开头难,毕竟之前没有什么微服务经验。最开始是一个组件一个组件查教程,然后一步一步集成,所以最开始的时候用的是主流的springcloud一波流:consul+zuul+hystrix,监控方面SpringbootAdmin+HystrixDashboard,随着我的不断深入(别想歪),发现很多组件已经不维护或者有更好的代替,所以楼主一步错步步错,最后步入了风尘之路...对不起串台了,马上开始
技术点
整体采用SpringCloud作为底部支撑,采用相对较活跃的组件,其中涉及的有(此处应该有一张很炫的图,大家可自行脑补,我实在懒得画:))
Nacos-服务注册、发现与配置中心(期间还用了eureka)
SpringcloudGateway-网关
Sentinel+dashboard-熔断降级,也叫断路器,这个是阿里出品的哨兵,一线互联网公司很多在用
Zipkin-链路跟踪
Elasticsearch+kibana-链路跟踪数据持久化以及查询
SpringbootAdmin-整体资源监控
Quartz-定时任务集成
JWT-用户认证,自己实现了一套简单的jwt
各组件版本列表
名称 | 版本 | git/maven | 参考网址 |
SpringBoot | 2.1.9 | ||
SpringCloud | Greenwich.SR3 | ||
Nacos(docker) | 1.1.4 | https://github.com/alibaba/nacos | https://nacos.io/ |
SpringcloudGateway | 2.1.3 | https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-gateway | |
Sentinel | 2.1.1 |
https://github.com/alibaba/Sentinel https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel |
https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D |
Zipkin-Slim(docker) | latest | https://github.com/openzipkin/zipkin | |
Elasticsearch(docker) | 6.8.5 | https://github.com/elastic/elasticsearch | |
Elasticsearch-head(node) | |||
kibana(docker) | 6.8.5 | ||
Quartz | 2.1.9 | https://github.com/quartz-scheduler/quartz | |
后续文章我将逐步展开每个组件的安装配置,各位大爷敬请期待
开篇我就以nacos和ek的安装和配置作为前戏吧,俗话说前戏做的足,后面高潮多嘛(手动狗头)
Nacos
Nacos是阿里18年开源的产品,目前更新非常活跃,属于springcloud-alibaba的一部分,文档也比较多,这里就不比较几个注册中心的对比了,也不复制nacos的介绍文档了,入门介绍可以看上表中的网址。
直接开干:
由于我的电脑配置不高,我选择安装在远程一台测试机的docker上,建议你也这么干
直接一把梭:
docker run --env MODE=standalone \
-v /dockerdata/nacos/config/application.properties:/home/nacos/conf/application.properties \
--name nacos -d -p 8848:8848 nacos/nacos-server:1.1.4
这里映射了8848端口,选择挂载了一个配置文件,配置文件内容如下
# spring server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port= # nacos.cmdb.dumpTaskInterval=
# nacos.cmdb.eventTaskInterval=
# nacos.cmdb.labelTaskInterval=
# nacos.cmdb.loadDataAtStart=false # metrics for prometheus
#management.endpoints.web.exposure.include=* # metrics for elastic search
management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200 # metrics for influx
management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
# default current work dir
server.tomcat.basedir= ## spring security config
### turn off security
#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/** nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/** # nacos.naming.distro.taskDispatchPeriod=200
# nacos.naming.distro.batchSyncKeyCount=1000
# nacos.naming.distro.syncRetryDelay=5000
# nacos.naming.data.warmup=true
# nacos.naming.expireInstance=true nacos.istio.mcp.server.enabled=false spring.datasource.platform=mysql db.num=1
db.url.0=jdbc:mysql://xxxx:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&useAffectedRows=true
db.user=root
db.password=123456
实际上大部分都是默认的配置文件,如果你本地测试过安装nacos,可以对比下默认的配置前面基本是一样的,我修改了后面
spring.datasource.platform=mysql 这一行,代表数据存储在mysql中,后面db开头的参数都是mysql的配置,而nacos官方也提供了默认数据库的表结构,地址为:https://github.com/alibaba/nacos/blob/409838fe1f2dc53f7f5c63c660cd69b0fae1d49e/config/src/main/resources/META-INF/nacos-db.sql
在你自己的mysql中建表就好,至于为啥我要保存到mysql中,自然是为了后面做准备了,这里先卖个关子,照做就好.
安装好后启动容器,配置好端口防火墙就可以访问了(默认用户名和密码都是nacos,想修改的话去改users表就好了,密码生成规则在nacos源码里,由看官自行查找,三年之后在评论里公布方法。。谁的臭鸡蛋??乱扔杂物罚款五毛)
ES以及相关组件安装
(这部分跟微服务关系不大,如果你不需要数据相关的要求,这部分可以跳过)
- Elasticsearch
我也不详细解释了,网上安装的教程多如牛毛,直接上命令
docker run -e xpack.security.enabled=true \
-e xpack.security.transport.ssl.enabled=true \
-e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" \
-d -p 9200:9200 -p 9300:9300 \
-v /dockerdata/es/config/master.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /dockerdata/es/master:/usr/share/elasticsearch/data \
-v /dockerdata/es/config/log4j2.properties:/usr/share/elasticsearch/config/log4j2.properties \
--name es-master elasticsearch:6.8.5
还是稍加解释下:映射的是9200(9300是通讯接口),挂载了配置文件master.yml,数据目录,以及日志文件,这里给出具体配置
master.yml
cluster.name: elasticsearch-cluster
node.name: master
network.bind_host: 0.0.0.0
network.publish_host: xxxx
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["xxxx:9300","xxxx:9301"]
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
log4j2.properties
appender.rolling.type = RollingFile
appender.rolling.name = rolling
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %.-10000m%n
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.log.gz
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size = 256MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
appender.rolling.strategy.action.type = Delete
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
appender.rolling.strategy.action.condition.type = IfFileName
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize
appender.rolling.strategy.action.condition.nested_condition.exceeds = 1GB
ps:这里有一个坑,log4j2的日志文件如果你复制过去可能会有空格,注意检查每一行的前后空格,否则会出意外错误
- head插件安装教程网上也很多,这里只提一个坑,不要使用docker安装head,原因是:
官方docker镜像没有同步git主版本,所以存在一个bug:所有接口调用都报406错误,原因是es新版更新了请求机制,需要指定content-type
ps:由于es开启了xpack,所以head访问时要在参数上添加用户名密码才可以访问,类似这样 http://xxxx:9100/?auth_user=elastic&auth_password=123456
- kibana:(注意kibana要与es的版本一致)
docker run -l es-master:elasticsearch -p 5601:5601 -v /dockerdata/es/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml -d kibana:6.8.5
kibana.yml:
server.name: kibana
server.host: ""
elasticsearch.url: http://xxxx:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true # Elasticsearch xpack
elasticsearch.username: "elastic"
elasticsearch.password: ""
总结
本文给出本系列涉及到的组件列表以及nacos的安装配置以及没有什么存在感的elk相关配置安装,而每一个组件的安装其实都有很多坑,不过大家可以自行查找,不属于本人原创的内容就不粘贴了
整体来说这篇并没有什么干货(逃命中。。) 后续逐步展开各组件的使用和集成,尽快让各位老铁步入主题,覆雨翻云、高潮迭起:) 谢谢观看
SpringCloud入门系列0-Nacos的安装与配置的更多相关文章
- Tomcat系列之服务器的安装与配置以及各组件详解
Tomcat系列之服务器的安装与配置以及各组件详解 大纲 一.前言 二.安装与配置Tomcat 三.Tomcat 目录的结构 四.Tomcat 配置文件 注,本文的测试的操作系统为CentOS 6.4 ...
- kubernetes系列(一)安装和配置
谈到kubernetes(或者说k8s)不得不提到云计算.虚拟化以及容器技术,相关介绍网上一大堆,不再赘述.而kubernetes的出现就是为了高效的管理云端运行的docker容器. 环境 docke ...
- Golang入门(1):安装与配置环境变量的意义
摘要 在几年前学习Java的时候,环境的配置就会劝退一部分的初学者.而对于Golang来说,也需要从环境的配置开始学起.这一篇文章将从如何安装Golang开始讲起,随后将会提到Golang中的环境变量 ...
- k8s入门系列之集群安装篇
关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...
- k8s 入门系列之集群安装篇
关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...
- OpenStack云计算快速入门之二:OpenStack安装与配置
原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...
- mysql-8.0.11-winx64 免安装版配置方法
mysql-8.0.11-winx64.zip 下载地址:https://dev.mysql.com/downloads/file/?id=476233 mysql-8.0.11-winx64.zi ...
- 【 D3.js 入门系列 --- 0 】 简介和安装
D3的全称是(Data-Driven Documents),顾名思义可以知道是一个关于数据驱动的文档的javascript类库.如果你不知道什么是javascript,请先学习javascript的相 ...
- 【 D3.js 入门系列 --- 0 】 简介及安装
家是我的个人博客: http://www.ourd3js.com/ ,csdn博客首页为:http://blog.csdn.net/lzhlzz/.转载请注明出处,谢谢. D3的全称是(Data-D ...
随机推荐
- c++第一次的个人作业
循环结构是c++中重要的结构用以实现代码的反复使用 三种不同的循环结构以及嵌套是必须认识与能够使用的 三种循环结构分别是: 在for循环中可以在for后的括号内加入初始条件,循环条件与参数变化.使得整 ...
- 2019-11-13-如何在国内发布-UWP-应用
title author date CreateTime categories 如何在国内发布 UWP 应用 lindexi 2019-11-13 08:46:44 +0800 2019-02-17 ...
- Python--day27--几个内置方法:__repr__()/__str__()/__del__()/__call__()/__getitem__/__setitem/delitem/__new__/__eq__/__hash__
repr方法() 双下方法__str__: 打印对象就相当于打印对象.__str__ __repr__(): __repr__是__str__的备胎,没有__str__的时候,就调用__repr__: ...
- H3C NAT组网和常用术语
- [转]Java Web工程目录结构
说明 介绍java web 工程的基本结构目录.记录java web 工程结构的学习. Java web 结构 java web严格来说分为两类工程结构:一个是工程编译目录结构,一个是工程发布目录结构 ...
- P1086 最大素数积
题目描述 我们称一个整数 \(x\) 是"素数积"当且仅当 \(x = a \times b\) 并且 \(a\) 和 \(b\) 都是素数. 现在告诉你一个数 \(N(1 \le ...
- 改善Azure App Service托管应用程序性能的几个技巧
本文介绍了几个技巧,这些技巧可以改善Azure App Service托管应用程序的性能.其中一些技巧是你现在就可以进行的配置变更, 而其他技巧则可能需要对应用程序进行一些重新设计和重构. 开发者都希 ...
- 大众点评实时监控系统CAT的那些坑
首先,感谢大众点评开源监控系统CAT.CAT是一款非常使用的功能建全的监控系统.作为一个知名的开源软件,真的是太差了. 想把CAT用起来,没有多年的Java经验是不行的.先吐槽一下,再写一篇如何用的文 ...
- java编译器优化和运行期优化
概述 最近在看jvm优化,总结一下学习的相关知识 (一)javac编译器 编译过程 1.解析与填充符号表过程 1).词法.语法分析 词法分析将源代码的字符流转变为标记集合,单个字符是程序编 ...
- JS 手札记
addEventListener中的事件如果移除(removeEventListener)的话不能在事件中执行bind(this)否则会移除无效! // selectCurrent() // copy ...