注册节点如何配置
㈠ 节点服务器的建立
如果在一个域内只建立一台服务器,则这台服务器就默认的成为主服务器(Administrator Server),每次在主服务器上更改设置后,必须重新启动服务器,这就不得不暂时停止对外提供服务,这种情况在企业环境中常常是不允许的。要解决这个问题,可以在此域中再增加一台或者多台服务器,这些新增加的有别于主服务器的服务器叫做受控服务器(Managed Servers) ,可以将所有商业服务分散于这些受控服务器上面,而用主服务器来管理它们。这样主服务器可以更改设置,重新启动,而各个受控服务器可以继续对外提供服务。
多服务器域中,必须唯一指定其中一台服务器为主服务器,其他服务器作为受控服务器,每一个受控服务器在这个域中是作为一个节点(Node)存在的,或叫节点服务器。在WLS6.1的主服务器控制台上提供了管理这些节点的工具,可以方便的启动停止其域内包含的受控服务器。如果要建立多服务器域,则必须使主服务器上的WLS与各个受控服务器上的WLS版本保持一致。先启动主服务器,然后再启动各个受控服务器。主服务器与受控服务器的每一次通信都是通过SSL来进行的。以上就是要点,下面详细说明一下:
关于数字证书:
各个节点与主服务器之间要使用SSL协议来进行通信,这是为了保证通信安全。此协议使用一配对密锁,公锁和私锁。这是一对非对称密锁,用其中任何一个密锁加密信息只能用另一个来解密。值得一提的是,WLS要求节点与主服务器之间采用双向验证。关于SSL协议的详细内容会在以后“安全管理”部分介绍。
在节点管理过程中所使用的数字证书是符合X.509格式的,私锁遵循PKCS#5和PKCS#8标准。PKCS#5是基于密码口令的,它描述了用密码口令来加密私锁的方法。PKCS#8是私锁的语法标准,说明了私锁应该具有的特征。用于节点管理中的证书与WLS的数字证书格式是不同的,前者只使用一个.crt文件,其中包含了被加过密的私锁(但并不发送密锁),而后者使用的是分开的文件。要使用节点管理,首先必须获得一个.crt证书来使用SSL通讯。您可以去CA机构购买一个私锁和数字证书或者使用WLS提供的私锁和数字证书,不管通过哪种办法,如果得到的私锁不是PKCS#5/#8格式的,要使用WLS提供的wlkeytool工具来转换一下。然后再将私锁、公锁和CA的认证授权文件用cat工具合并成一个crt文件。这里举个例子,看看如何使用WLS自带的私锁、公锁和CA认证授权文件来生成一个crt文件。您可以在mydomain这个默认域所对应的文件夹中找到:demokey.pem、democert.pem和ca.pem,他们分别是私锁、公锁和CA授权文件。这个私锁demokey.pem不是基于PKCS#5/#8格式的,因此我们先用wlkeytool转换一下:
wlkeytool demokey.pem demokey_new
先是提示您输入demokey.pem的解锁密码,如果没有那么直接按回车。然后提示输入新密码,填入密码后,将生成一个PKCS#5/#8格式的新私锁。下面合并这三个文件,生成crt文件:
cat demokey_new democert.pem ca.pem > demo.crt
在mydomain目录下原来就有已经生成好的demo.crt文件,您可以直接拿来使用,或者为了熟悉一下生成crt文件的过程,不妨按上述方法操作一遍,以后就可以生成自己的crt文件。
有了证书我们就可以开始配置各个节点服务器了。
配置节点:
登陆到主服务器的控制台,选择左侧树状菜单中的“Machines”,在右侧框架中点击“Configure a new Machine…”连接。填入要被管理的节点服务器机器名后点击“create”。然后点击“Node Magager”标签页,在这里设置一些参数,这些参数意义可以在后面“启动节点服务器”中找到说明。“Listen Address”填写节点服务器IP或者DNS名。“Listen Port”默认是“5555”,请与此节点服务器启动时使用的端口一致。“Certificate”默认使用“config/demo.crt”,可以改成你自己生成的crt文件。“Certificate Passwrod”没有显示,如果更改了数字证书,则也应该同时修改此密码。“Trusted Certs File”默认是“config/trusted.crt”。
全部填写完后,点击“Appley”按钮。
点击左侧树状菜单中的“Servers”,在右侧框架中点击“Configure a new Server…”连接,在“Configuration->General”标签页的“Name”中添上节点服务器的名称,在“Machine”下拉菜单中选择刚刚建立的机器名,然后点击“Create”按钮。
点击“Configuration->Remote Start”标签页,当主服务器远程启动此节点服务器时,会调用这里设置的参数。如果不提供这些参数,那么主服务器会使用节点服务器启动监听时设置的变量值。由于在下面将要介绍的“远程启动节点服务器”中会提到启动监听时的变量设置,这里就不讲如何填写这些参数了,因为不填也可以。
编辑config/nodemanager.hosts这个文件,删除里面的默认值,然后添加主服务器的地址。
本地启动节点服务器:
可以使用节点服务器上的“WLS目录config与主服务器相同的域名startManagedWebLogic.cmd”这个脚本文件来在本地启动节点服务器。启动之前需要在此节点机器的系统环境变量中(在“我的电脑”上按右键->属性->高级->环境变量->系统变量->添加…)添加两个环境变量(其值的格式可参考startManagedWebLogic.cmd文件的第68行):
ADMIN_URL=主服务器地址和端口
SERVER_NAME=此节点服务器名
再次提醒一下,要启动的节点服务器必须与主服务器在同一个域中(域名相同,比如都是mydomain),而且WLS版本也要相同。添加后,先保证主服务器正在运行,然后执行此脚本来启动节点服务器。在命令行窗口中您会发现,此节点服务器首先连接到主服务器上面来获得配置信息,然后用此配置来启动服务器。
要关闭此节点服务器可以使用命令行:
java weblgoic.Admin ?url host:port SHUTDOWN ?username:adminname ?password password
也可以在主服务器控制台上关闭此节点服务器,只要在左侧菜单中右键选择此节点服务器图标,选择“Stop this server…”即可。“Kill this server…”在这里不能用,必须打开节点服务器监听才可以使用此命令,如何进行监听,请看下面介绍。
远程启动节点服务器:
这与启动主服务器一样,只是启动命令和参数不同。如果一台节点服务器启动了监听,那么主服务器就可以远程启动这台节点服务器。
-Dweblogic.nodemanager.listenAddress=host 受控服务器IP或者DNS名
-Dweblogic.nodemanager.listenPort=post 监听端口,默认5555
-Dweblogic.nodemanager.savedLogsDirectory=path 日志目录,默认NodeManagerLogs目录。
-Dweblogic,nodemanager.certificateFile=path 数字证书的路径和文件名
-Dweblogic.nodemanager.certificateType=type 数字证书类型默认RSA,还可以是DSA。
-Dweblogic.nodemanager.certificatePassword=pkpassword 私锁密码
-Dweblogic.nodemanager.trustedCerts=path 被认可的权威授权列表,默认为config/trusted.crt。
-Dweblogic.nodemanager.reverseDnsEnabled=true 如果使用DNS名来指定受控服务器地址,则要设定此项为true。默认为false。
-Dweblogic.nodemanager.trustedHosts=path 指定存放可以被信任的主机列表文件路径。默认为config/nodemanager.hosts文件,其中默认设定的是本机地址,请修改成主服务器地址。只有列表中存在的服务器地址才能与本节点服务器通信。一般来说文件只包含主服务器的地址这么一行就够了。
-Dbea.home=dir BEA Home路径
-Djava.security.plicy==policy_file 默认是“WLS目录/lib/weblogic.policy”
-Dweblogic.nodemanager.=true 默认情况下,节点服务器并不进行主机名验证,如果要使用验证,设此项为true。
如果想使用脚本来启动监听,请用文本编辑器编辑节点服务器上config目录下面的startNodeManager.cmd文件,添加一个启动参数:
-Dweblogic.nodemanager.listenAddress=此节点服务器的IP或者DNS名
做完以上修改后就可以运行此脚本来启动此节点服务器监听了,启动后命令行窗口会显示正在此节点服务器地址上用端口(5555)进行监听的信息。
您可以将节点服务器作为一项windows服务,这样每次启动计算机都可以自动启动节点服务器。作为节点服务器来说,推荐您将其注册成windows服务。您可以复制installNtService.cmd和uninstallNtService.cmd文件,并改名成installNMNtService.cmd和uninstallNMNtService.cmd。然后参考上面介绍的命令和startManagedWebLogic.cmd中的内容修改这两个文件中的内容:将“weblogic.Server”改成“weblogic.nodemanager.NodeManager”以便启动节点服务器。更改-svcname参数并使installNMNtService.cmd和uninstallNMNtService.cmd中的此参数值保持一致。其他参数请自行修改。
若要远程启动关闭节点服务器,登陆到主服务器的控制台,展开左侧树状菜单中的“Servers”,然后在想要启动的节点服务器图标上点击右键,选择“Start this Server…”,这会启动选中的远程节点服务器。选择“Stop this Server…”会关闭选中的远程节点服务器。选择“Kill this Server…”会杀掉没有响应的远程节点服务器。选择“Get StdOut for this server…”和“Get StdErr for this server…”可以查看此服务器的系统消息。
㈡ surge节点订阅怎么配置
Surge for iOS 是一款付费应用,由于众所周知的原因,在国内 App Store 无法购买,如有需要,请到美区 App Store 购买安装。
配置
用手机打开网站并且登录,点击右上角打开顶部菜单栏,选择“我的服务”。然后进入需要配置的服务,点击“配置下载”,复制“Surge 配置连接”。
image.png
打开 Surge,点击左上角 Surge 图标,选择“从 URL 下载配置”,然后将复制的链接填入对话框,确认后点击左上角“完成”回到首页。
image.png
使用
点击左上角“启动”按钮即可打开 Surge,在策略组中可以选择想要使用的节点。
在“出站模式”中,“直接连接”表示所有请求不通过代理服务器访问,“全局代理”表示所有请求都通过代理服务器访问,“规则模式”表示通过黑白名单进行智能分流,只有被屏蔽的网站才通过代理服务器访问,其余网站直接连接。
㈢ 基于DNS搭建高可用Eureka注册中心
按Alt + 回车键,将会生成eureka-server.zip,解压缩后得到一个maven 项目,将该项目录入IDE。
我们首先来看一下pom文件,可以看出项目中引用了spring-cloud-starter-netflix-eureka-server, 并且springboot 的版本号为:2.1.2.RELEASE, Spring Cloud的版本号为:Greenwich.RC2RC2 表示还没有正式发布,只是第二个Release Candidate。
接下来我们只需要两个步骤,
a、修改EurekaServerApplication, 在@SpringBootApplication的注解上面,加入一个新的注解:@EnableEurekaServer
b、在resources 目录中加入application.yml 文件, 并配置以下信息:
一个简单的Eureka 注册中心就已经可以使用了,我们运行一下这个spring boot 应用,找开浏览器:localhost:8761,即可看到我们的注册中心就已经运行启来了。并且EUREKA-SERVER也注册到自己的注册中心了。
单节点的注册中心已经搭建完毕,但单节点的注册中心存在单点故障的可能,不能用于生产环境。生产环境的Eureka一般采用集群方式进行部署。
通过client.serviceUrl.defaultZone配置多个peer节点,因为是在单机上测试,所以修改了host文件,并且使用不同的端口号来启动注册中心。正式的生产环境请根据自己的实际情况进行配置,比如:第一台Eureka的IP地址为:192.168.0.100,则defaultZone配置其他三台注册中心http://192.168.0.101:8761/eureka/,http://192.168.0.102:8761/eureka/,http://192.168.0.103:8761/eureka/
依次启动4台注册中心,打开网页:http://localhost:8764
可以看到其它三台注册中心已经出现在已注册的replicas和可用的replicas列表里边。
如上图所示,4台注册中心,每台注册中心需要配置其他三台服务器,以Eureka 1为例,其配置如下:
注册中心是本应该是无状态的,可以横向扩展。但由于每台注册中心的配置都不一样,所以扩展起来比较麻烦,需要修改配置文件,这样就无法做到快速的扩容。
微服务客户端需要配置注册中心的地址,使用的是如下的配置:
由于配置的是固定的IP地址,如果我们要扩容注册中心,增加新的注册中心节点,那我们就需要修改微服务客户端的配置文件,将新的注册中心节点进入的服务器列表中。试想一下,如果有几十个微服务,每个微服务有4个节点,那将会要修改上百个配置文件。很显然这种方式不太可取,从软件设计角度来说,违反了开闭原则。
其实Eureka 注册中心还有另一种高可用配置方式,基于DNS。Eureka天生就可以部署在像AWS这样的公有云上,并且可以跨Region,跨Available Zone部署。虽然我们不用部署在云端,依然可以利用这一特性,我们可以把Region看作我们数据中心的机房,Avaiable Zone 看作是机房中的网络区域,结合内部DNS服务来实现高可用的注册中心。
画重点:
a. region: default,配置地区
b. useDnsForFetchingServiceUrls,表示基于DNS获取服务信息
c. eurekaServerDNSName: eureka.txzq.com.cn,配置域名服务器名称
键:txt.default.eureka.txzq.com.cn 值:shenzhen.eureka.txzq.com.cn
键:txt.shenzhen.eureka.txzq.com.cn 值:172.18.10.1 172.18.10.2 172.18.10.3 172.18.10.4
第一条记录表示,default 区域,包含了哪些可用区,我们用shenzhen表示是深圳机房,txt记录的值就设置为:shenzhen.eureka.txzq.com.cn
第二第记录表示 , shenzhen机房有哪些服务器,多台服务器使用空格格开。
如果在本地测试,需要搭建一台自己的DNS服务器,可以参考我的另一篇文章: 基于Docker快速搭建DNS Server
Client View是指DNS服务应用到哪一个网段,比如:172.18.10.0/24网段的IP连接到BIND服务器,才会解析指定的域名。
在添加域名的时候,需要指定Client View,这里我们选择我们刚刚创建的View_172.18.10.0,指的是只有在这个网段的IP访问这台DNS服务器,才能解析。
添加完一级域名后我们刷一下这个ZONE,然后设置一下本地DNS服务器
DNS域名服务器验证通过后,我们接下来就可以在为这个域名添加我们所需要的txt 记录了。
到这里我们的准备工作就已经基本完成了。使用Maven将注册中心编译成,输出jar包。新建一个Eureka的docker镜像,并启动4个容器。基于DNS的注册中心就搭建完毕了。
你只需要对DNS记录进行变更,就可以实现动态的、快速扩容/缩容了。
关于如何将Eureka部署到Docker,请参考另一篇文章:
㈣ 如何设置自己的网络为节点
tracert 加上对端IP地址,就可以直接显示了! 在CMD里面执行。
(如果中间有防火墙的话,可能会禁止tracert,那就过不去了。)