javasgl

step by step


  • Home

  • Archives

  • Tags

  • Categories

  • About

  • Search

ES7.8.1 集群搭建踩坑记录

Posted on 2020-08-14 | In elasticsearch | Visitors

时隔两年多时间,再次接触 elasticsearch,准备在测试环境搭建一套 ES 集群用来测试

之前使用ES还是在其1.4.x~2.0.x左右的时候,现在 ES 版本已经发展到了7.x以上了(中间经历过于kibana同步版本号,所以版本变动比较大)

单机安装

大致安装步骤和之前的版本差别不大,依然保持了其开箱即用的特性,只需要很少的配置即可

单机很简单,修改集群名称,节点名称,数据及日志目录,以及监听绑定的ip,然后直接运行可执行文件即可

1
2
3
4
5
6
7
8
9
注:下载的打包文件中,附带一个openjdk可以直接使用,如果使用 supervisor 来管理 es, 可以使用
supervisor 的 environment 功能,来设置 JAVA_HOME 环境变量

配置如下,ES_HOME 即 elasticsearch 解压后文件夹所在目录

[es]
command=$ES_HOME/bin/elasticsearch
directory=$ES_HOME
environment=JAVA_HOME=$ES_HOME/jdk

单机没什么问题,很顺畅的就启动起来了,通过 curl http://ip:es_port 可以得到很熟悉的返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"name" : "node1",
"cluster_name" : "cluster-name",
"cluster_uuid" : "2c2jICSxTHK_jUcJjaBucw",
"version" : {
"number" : "7.8.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "b5ca9c58fb664ca8bf9e4057fc229b3396bf3a89",
"build_date" : "2020-07-21T16:40:44.668009Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

组建集群

既然单机的起来的,那如法炮制,将配置文件复制一份,修改了其 node name, scp到另外一台机器上,准备好 supervisor 配置,准备开始组建两个节点组成的集群

满以为不会有什么问题,启动之后,发现,第二个节点,怎么也加入不到第一个节点之中

Read more »

修改 git submodule

Posted on 2020-03-22 | In git | Visitors

初始

git 项目中,可以使用以下命令为项目添加submodule

1
git submodule add -b branch_name git@github.com:javasgl/xxx.git module_path

执行以上命令后,会在当前项目下生成一个.gitmodules 文件,内容如下

1
2
3
4
[submodule "module_path"]
path = module_path
url = git@github.com:javasgl/xxx.git
branch = branch_name

同时也将修改 .git/config文件

1
2
3
[submodule "module_path"]
url = git@github.com:javasgl/xxx.git
active = true

此时,执行以下命令即可从远程拉取相关代码到submodule中:

1
2
3
git submodule update --init

// 可以使用 git submodule deinit 重新初始化

执行之后,会在 .git/modules/module_path/ 下看到 submodeule相关的代码

1
2
.git/modules
└── module_path

变更

有时候,对于已经添加了submodule的项目,如果想更换 submodule 的地址,那个这就比较麻烦,目前git并没有直接提供相关命令,需要进行一系列的手工操作

简单记录如下,备查

Read more »

缓存常见问题处理

Posted on 2020-02-19 | In redis | Visitors

缓存使用过过程中常见问题基本是以下几个问题:

  • 缓存穿透问题
  • 缓存并发问题
  • 热点数据问题
  • 数据一致问题

这些问题不是独立的,一般都会存在因果关系或者同时存在

下面列举一下问题原因及基本解决思路

缓存穿透/过期

缓存穿透问题是指请求数据在缓存中没有找到,导致请求直接打到数据库的情况

这种场景下,大致有两类原因可以导致这类问题:

Read more »

mysql5.7/mariadb Generated Columns

Posted on 2020-02-18 | In mysql | Visitors

mysql 5.7 以后带来了一个新的功能,即 “Generated Columns”,字面意思可翻译为 “生成列”,顾名思义,这列的数据不能被直接插入或者更新,而是依据一定的规则自动生成。

Generated Columns 定义方式如下:

1
2
3
4
col_name data_type [GENERATED ALWAYS] AS (expr)
[VIRTUAL | STORED] [NOT NULL | NULL]
[UNIQUE [KEY]] [[PRIMARY] KEY]
[COMMENT 'string']

注:

默认是 VIRTUAL,即 虚拟列,不实际占用存储空间,在读取数据时即时计算而来;
STORED 则与之相反,它会生成真实的数据列,和正常的列无异,占用存储空间;
两者在限制上各有细微区别,具体可查看文末 mysql/mariadb 链接阅读详情

以下样例,展示了自动生成指定时间字段的月份:

Read more »

永久修改 mac mac files/proc 限制

Posted on 2019-10-11 | In os | Visitors

mac 升级后的某一天,本地跑程序时发现提示 open too many files, 竟然提示打开文件数过多。

使用ulimit -n 查看,最大的文件数限制为 256 ,这明显太小了。 使用launchctl limit 查看,结果如下:

1
2
3
4
5
6
7
8
9
10
~/codes/backupAnyThing/blog(master*) » launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 1064 1064
maxfiles 256 256

解决方案大致上有三种:

  • 命令行中执行 ulimit -n xxx, 但是仅对当前 session 生效,新开 session 或者重启后会恢复为系统值

  • 在 .bashrc / .zshrc 等脚本中加上 ulimit -n xxxx, 这样每次新开 session 即可自动设置最大文件描述符显示

  • 加入到 launchd 服务中, 永久修改

这里记录下第三种方案的步骤

创建两个 plist文件,民间名分别为 limit.maxproc.plist, limit.maxfiles.plist, 内容如下:

file: limit.maxfiles.plist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>200000</string>
<string>200000</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>

file: limit.maxproc.plist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>20480</string>
<string>20480</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>

将以上两个文件移动到 /Library/LaunchDaemons 目录下,确保两个文件的权限如下:

1
2
-rw-r--r--  1 root  wheel   592B Sep 29 16:39 limit.maxfiles.plist
-rw-r--r-- 1 root wheel 589B Sep 29 16:40 limit.maxproc.plist

重启系统,重启后自动生效。

注: 如果只需要修改 max files, 仅添加 limit.maxfiles.plist 文件即可。

12…12
javasgl

javasgl

A journey of a thousand miles begins with single step

60 posts
13 categories
94 tags
RSS
GitHub Wechat
© 2020 javasgl
Powered by Hexo
Theme - NexT.Mist
0%