在上篇文章《ElasticSearch学习日志(一):基于Dockerfile构建Docker镜像以及安装分词器插件(ik/pinyin)》中,我已经做好了包含ik
和pinyin
的分词插件镜像my-es-image:0.0.1
,本篇文章将记录基于此镜像如何搭建ElasticSearch服务集群。
由于我没有那么多的服务器,因此使用docker容器来模拟。
首先,创建文件夹cluster
,里面再创建三个文件夹,分别为node1
、node2
、node3
,模拟三台服务器。
然后分别在node1
、node2
、node3
中创建config
、data/nodes
、logs
文件夹。其中config
文件夹中存放ElasticSearch配置文件elasticsearch.yml
,data/nodes
文件夹是用来挂载数据,logs
文件夹用来挂载日志。
最终的文件夹结构如下图所示:
下面是elasticsearch.yml
配置文件内容,不同的节点只需要修改节点名称即可。
1 | # 设置开启跨域 可以让es-head访问 |
然后在cluster
文件夹下创建docker-compose.yml
文件,内容如下:
1 | version: '2' |
sysctl -w vm.max_map_count=262144
,否则服务会挂掉。home
文件夹下这个问题是没有的。命令参考:
1 | mkdir esdatadir |
docker-compose up -d
启动后,可以访问url检测各个节点的状态
curl localhost:9201
1 | { |
curl localhost:9202
1 | { |
curl localhost:9203
1 | { |
docker-compose down
elasticsearch-plugin
命令安装后,使用docker commit
命令构建,个人不推崇此做法,因为这样简单的操作如果不小心清理,不仅会导致镜像文件臃肿,而且docker commit
命令属于黑箱操作,生成的镜像只有制作镜像的人知道执行过什么命令,不利于后期的维护工作。因此推荐使用以下Dockerfile
文件制作镜像:
1 | FROM docker.elastic.co/elasticsearch/elasticsearch:6.6.0 |
注意:
analysis-ik
、analysis-pinyin
插件的版本务必与elasticsearch
的版本保持一致
然后使用docker bulid -t <name:version>
命令进行构建即可。
项目中遇到上传大文件的需求(上传视频、大的execl对账表格等),特此记录解决方案,有不足之处望斧正。
form-data
表单提交上传。Vue
,axios
Node.js
,koa
,koa-body
1 |
|
1 | /** |
docker pull stanback/alpine-strongswan-vpn
git clone https://github.com/stanback/alpine-strongswan-vpn.git ~/vpn-git
generate_certs.sh
文件1 | CA_CN=yuanjianxin.com # 主域名 |
~/vpn-git/generate_certs.sh
输入证书密钥,比如 123456
修改~/vpn-git/config/ipsec.conf
为以下内容
1 | config setup |
~/vpn-git/config/ipsec.secrets
为以下内容:1 | #: RSA serverKey.pem |
~/vpn-git/config/strongswan.conf
为以下内容:1 | charon { |
1 | sudo sysctl net.ipv4.ip_forward=1 |
1 | sudo firewalld |
~/vpn-git/config
下编写docker-compose.yml
文件,内容如下:1 | version: '2' |
docker-compose up -d
~/vpn-git/config/ipsec.d/clientCert.p12
~/vpn-git/config/ipsec.d/cacerts/caCert.pem
1 | 类型:IKEv2 |
下载链接:https://www.sonatype.com/download-nexus-repository-trial
点击链接,在页面中选择版本unix,然后下载3.x版本。
cd nexus3
cd nexus-3.12.0-01/bin
./nexus start
admin
,默认密码 admin123
Repositories
Create repository
,选择npm(hosted)
类型,这个是存放私服包的库,这里起名为rupiahone-hosted
, 然后点击下面的 Create repository
即可。Create repository
,选择 npm(proxy)
,这里名称为rupiahone-proxy
。Remote storage
填入代理源,这里填入的是npm官方的地址https://registry.npmjs.org
。如果你有需要,也可以填入淘宝镜像地址https://registry.npm.taobao.org
。Create repository
即可。Create repository
,选择 npm(group)
,这里名称为rupiahone-group
。Group
的视图中,将上面步骤创建的两个仓库添加到右边。在设置界面,点击Security
下的Realms
,将npm Bearer Token Realm
添加到右边,然后保存。
(这一步非常重要,否则publish 包到私服的时候会报没有权限的错误)
1 | mkdir test_npm && cd test_npm |
npm init
登录到私服
执行以下命令
1 | npm login --registry=http://localhost:8081/repository/rupiahone-hosted/ |
(切记,这里registry必须是hosted类型的库)
admin
,密码admin123
,邮箱随便填)正常的话会提示登录成功的信息。如果你登录失败,得到以下错误:
1 | Registry returned 404 for PUT on http://localhost:8081/repository/npm-internal/-/user/org.couchdb.user:admin |
解决办法:刷新nexus repostory manger 后台,然后重新npm login。
发布模块。
1 | npm publish --registry=http://localhost:8081/repository/rupiahone-hosted/ |
查看已发布模块。
在页面http://localhost:8081/#browse/browse
中,选中你的hosted
库,就可以看到你发布的模块了。私有包的依赖包会存放在group
库中。
安装就简单多了,只要执行以下命令即可:
1 | npm install xxx --registry=http://localhost:8081/repository/rupiahone-group/` |
(注意:xxx为包名,安装时的registry必须是group类型的库)
]]>