ZK-Introduction
Zookeeper基础概念介绍.
ZK中维护了一个分布式的文件系统,每个节点称为Znodes,
本文介绍了基于ZK的典型应用场景,这些都基于ZK所提供的ZNode 顺序ID和Watchs功能。
我们在使用 ZK 来实现组件时,可以考虑使用 Apache Curator,它提供了封装好,方便操作 ZK 的接口。
CCR (Cross Cluster Replication),
本文会介绍如何在ES6.7环境下搭建CCR 双向复制模型, 并测试HTTP和TCP Client(ES7.0版本为Deprecated, 8.0正式移除)两种模式是否能够实现数据跨集群备份。
通过预先配置RSA公钥,可以做到免密登陆远程机器。但是在设置时,往往会遇到很多问题,因此记录步骤和常见问题来快速定位解决。
ES Bulk 请求是使用一个请求来批量执行多个操作的一种方法,可以显著的增加索引数据的速度。
OpenSSl是一个免费开源的库,提供了构建数字证书的命令行工具,可以用于构建证书。
查看KEY信息
> openssl rsa -noout -text -in myserver.key
查看CSR信息
> openssl req -noout -text -in myserver.csr
查看证书信息
> openssl x509 -noout -text -in ca.crt
首先选择一个目录,作为工作目录。系统自带的OpenSSl工作目录如下:
> cd /etc/pki/CA
当然也可以自定义一个目录进行配置,本文使用默认路径。
选择CA路径后,需要进行如下配置
1 | mkdir certs crl newcerts private |
作为一个CA Authority,需要管理大量的 pair 对,而原始的一对 pair 对叫做 root pair,它包含了 root key(cakey.pem)和 root certificate(cacert.pem)。
创建Root key
1 | # 创建root key, 选择一种加密方式生成密钥 并设置密钥长度 |
创建Root Certification
1 | # 自定义目录 直接生成Root Crt |
通常情况下,root CA 不会直接为服务器或者客户端签发证书,它们会先为自己生成几个中间 CA(intermediate CAs),这几个中间 CA 作为 root CA 的代表为服务器和客户端签证。
如下图所示,DigCert生成中间CA为zhihu.com颁发了证书
> openssl genrsa -des3 -out user_ca.key 2048
查看公钥
> cat user_ca.key
查看私钥
> openssl rsa -in user_ca.key -out user_ca_unencrypted.pem -outform PEM
> openssl req -new -days 365 -key user_ca.key -out user_ca.csr
自定义目录需指定config 路径
> openssl req -new -days 365 -key user_ca.key -out user_ca.csr -config openssl.cnf
> openssl ca -in user_ca.csr -out user_ca.pem -extensions v3_req
当我们生成一个CA证书,需要指定一个Common Name,客户端使用HTTPS访问某个网址时, 会获得并校验网站的CA证书是否合法,其中包括域名合法性检测,匹配当前URL是否匹配CN或DNS或IP Address。
在证书不支持SubjectAltName情况下,默认匹配Common Name.
因此我们需要绑定CN到某个具体的Host Name,这里需要引入通配符。
> SSL通配符证书是在一个单一的证书中,在通用名(域名)中包含一个“*”通配符字段。这使得该证书可以保护无限数量的多个子域名(主机)。
使用Common Name,即便使用通配符,也只能匹配一类的域名。
SubjectAlternativeName(简称:san)是X509 Version 3 (RFC 2459)的扩展,允许ssl证书指定多个可以匹配的名称。
生成一个通用的Csr文件时,会交互式的键入Subject所属的内容,但是SAN则不会要求输入。我们需要修改openssl.cnf的x509 V3扩展的配置和san的参数。
SubjectAltName 可以包含email 地址,ip地址,正则匹配DNS主机名,等等。
ssl这样的一个特性叫做:SubjectAlternativeName(简称:san)
1 | vi /etc/pki/tls/openssl.cnf |
在配置完openssl.cnf后,后续生成crt操作参照本文对应章节。
如图所示,IP Address 通过了HTTPS认证
1 | // https-server.js |
启动 HTTPS Server
> node https-server.js
通过CA 证书加密HTTPS请求,数据实现了加密,那么CA证书又是如何被确认为真实的证书的呢。
这里同样需要一套机制来确保CA 证书的正确性。
详情可见下文
JSR 133中对Happen-before的定义如下:Two actions can be ordered by a happens-before relationship.If one action happens before another, then the first is visible to and ordered before the second.
如果两个操作存在 Happen-before 的一个关系,那么前置的操作一定先于后置操作且对后置操作可见
JMM 中定义了许多 Action, 有些 Action 之间就存在 Happen-Before 关系。