页面“Org-mode”与“Redis5 cluster”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
 +
=节点信息=
 +
<pre>
 +
角色                        主机名                                                            IP1              IP2     
 +
 +
7000  7001              01                  192.168.10.211   
 +
7002  7003              02                  192.168.10.212     
 +
7004  7005              03                  192.168.10.213     
 +
</pre>
 +
 +
姐妹篇 [[Redis4 cluster]]
  
Emacs 的 Org-mode 在一定程度上可以替代 OneNote,有些方面甚至更好
+
=防火墙设置=
=pre=
 
 
<pre>
 
<pre>
Emacs键盘命令的约定表示方法:
+
第一台:
 +
firewall-cmd --permanent --add-port=7000/tcp
 +
firewall-cmd --permanent --add-port=17000/tcp
 +
firewall-cmd --permanent --add-port=7001/tcp
 +
firewall-cmd --permanent --add-port=17001/tcp
 +
firewall-cmd --reload
 +
firewall-cmd --list-all-zones
 +
第二台:
 +
firewall-cmd --permanent --add-port=7002/tcp
 +
firewall-cmd --permanent --add-port=17002/tcp
 +
firewall-cmd --permanent --add-port=7003/tcp
 +
firewall-cmd --permanent --add-port=17003/tcp
 +
firewall-cmd --reload
 +
firewall-cmd --list-all-zones
 +
第三台:
 +
firewall-cmd --permanent --add-port=7004/tcp
 +
firewall-cmd --permanent --add-port=17004/tcp
 +
firewall-cmd --permanent --add-port=7005/tcp
 +
firewall-cmd --permanent --add-port=17005/tcp
 +
firewall-cmd --reload
 +
firewall-cmd --list-all-zones
 +
</pre>
  
C 代表 Ctrl 键
+
=系统参数设置=
M 代表 Alt 键
+
<pre>#vi /etc/sysctl.conf
S 代表 Shift 键
+
echo 'vm.overcommit_memory = 1
以上三个按键单独按下没有意义,用 - 号表示它们搭配使用的按键
+
net.core.somaxconn = 1024' >>/etc/sysctl.conf
用空格连接的一系列符号表示顺序按下符号所代表的按键
+
 
其他符号: LEFT/RIGHT/UP/DOWN 分别代表的左右上下方向键, TAB 即 Tab 键, RET 代表 Enter 键
+
/sbin/sysctl -p /etc/sysctl.conf
例如:
 
C-x 表示同时按下Ctrl和x字符键
 
C-S-TAB 表示同时按下Ctrl, Shift和Tab键
 
M-x org-mode 表示先同时按下Alt和x字符键,再键盘输入org-mode字符串
 
C-x C-s 表示先同时按Ctrl和x字符键,然后同时按下Ctrl和s字符键
 
C-c C-e hh 表示先同时按Ctrl和c字符键,然后同时按下Ctrl和e字符键,最后键盘输入hh
 
 
</pre>
 
</pre>
  
=install=
+
=redis 5 安装=
 
<pre>
 
<pre>
 +
#bash redisins.sh 2>&1 | tee redislog
  
vi  ~/.emacs #添加源
+
wget -c http://download.redis.io/releases/redis-5.0.6.tar.gz
(require 'package)
+
#set var
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)
+
redis_install_dir=/data/apps/redis
 +
redis_ver=5.0.6
  
 +
THREAD=4
 +
tar xzf redis-${redis_ver}.tar.gz
 +
pushd redis-${redis_ver} > /dev/null
  
# 如果用老版本的emacs 或者你想安装
+
make  -j ${THREAD}
Get it with M-x package-install RET org RET (
+
 
</pre>
+
make PREFIX=${redis_install_dir}
=进入Org模式=
+
make distclean
<pre>
+
#cd src && make install #这个才行 特别是cluster ? 2019年 8月16日 星期五 23时29分41秒 CST
  1.打开后缀名为org的文件自动进入org-mode模式
+
make install  PREFIX=${redis_install_dir}  
2.在init.el配置文件中设置某类文件的编辑模式为org,如txt类文件:
+
echo 'export PATH=${redis_install_dir}/bin/:$PATH' >> /etc/profile && source /etc/profile
  
      (add-to-list 'auto-mode-alist '("\\.txt\\'" . org-mode))
+
####**********************下面是老的
 +
wget -c http://download.redis.io/releases/redis-5.0.5.tar.gz
 +
redis_install_dir=/home/apps/redis
 +
redis_ver=5.0.5
  
3.用Emacs打开文件后使用主模式选择命令( M-x org-mode )
+
THREAD=4
 +
tar xzf redis-${redis_ver}.tar.gz
 +
pushd redis-${redis_ver} > /dev/null
 +
make  -j ${THREAD}
 +
make PREFIX=/home/apps/redis #here
 +
make distclean
 +
#cd src && make install #这个才行 特别是cluster ? 2019年 8月16日 星期五 23时29分41秒 CST
 +
make install  PREFIX=/home/apps/redis  # make install #这个有时没有创建出目录来呀
  
4.任意文件名,如果文件的第一个非空行包含: -*-org-*- ,用Emacs打开该文件后会自动使用org-mode模式。
+
#这个我没做 根本没用 哈哈
 +
#复制rb 或者放到安装的bin目录 然后再加path
 +
#cp /opt/redis-5.0.0/src/redis-trib.rb /usr/local/bin
  
后面这种方式对于使用Emacs编辑程序文件尤其方便,无需改变文件的后缀名。
+
echo 'export PATH=/home/apps/redis/bin/:$PATH' >> /etc/profile && source /etc/profile
 +
##**********************上面是老的
 +
NOTE
 +
redis5 用redis-cli创建整个redis集群(redis5以前的版本集群是依靠ruby脚本redis-trib.rb实现
 
</pre>
 
</pre>
  
=TODO=
+
=创建节点 =
 
<pre>
 
<pre>
输入C-c . 会出现一个日历,我们点选相应的时间即可插入
+
#第一台:192.168.10.211 #here
 +
redis_install_dir=/data/apps/redis
 +
mkdir -p ${redis_install_dir}
 +
cd ${redis_install_dir}
 +
mkdir -p redis_cluster
 +
cd redis_cluster
 +
mkdir data 7000 7001
  
* 待办事项(TODO )
+
#cp /root/src/redis-5.0.5/redis.conf  ${redis_install_dir}/redis_cluster
  TODO是org-mode最具特色的一个功能,也是org-mode设计的初衷,org-mode的作者本意是用其来完成一个个人时间管理程序(GDT)。因此,可以用org-mode来做一个个人时间管理工具!   下面我们来看怎么写TODO。TODO 也是一类标题,因此也需要用*开头,在Emacs中输入 * 然后快捷键如下
+
#cd /home/apps/redis/redis_cluster
C-c C-t 按照 无状态->TODO->DONE->无状态 的顺序更改任务状态
+
#cp redis.conf 7000/redis_7000.conf
 +
#mv redis.conf  7001/redis_7001.conf
  
** TODO 洗衣服
 
可以看到当中的TODO变成了红色,我们讲光标移到该行,按C-c C-t,则发现TODO变成了DONE(这个序列可以自己定义,详见org-mode手册)。org-mode兼有了标题和列表的功能,也可以添加checkbox和完成进度,除此之外,还可以设计优先级。 我们输入:
 
  
*** TODO [# A] 任务1
+
#第2台:192.168.10.212
*** TODO [# B] 任务2
+
redis_install_dir=/data/apps/redis
*** TODO 总任务 [33%]
+
mkdir -p ${redis_install_dir}
**** TODO 子任务1
+
cd ${redis_install_dir}
**** TODO 子任务2 [0%]
+
mkdir -p redis_cluster
      - [-] subsub1 [1/2]
+
cd redis_cluster
      - [ ] subsub2
+
mkdir data 7002 7003
      - [X] subsub3
+
 
    **** DONE 一个已完成的任务
+
#cp /root/src/redis-5.0.5/redis.conf  .
 +
#cp  redis.conf 7002/redis_7002.conf
 +
#mv redis.conf  7003/redis_7003.conf
 +
 
 +
 
 +
#第3台:192.168.10.213
 +
redis_install_dir=/data/apps/redis
 +
mkdir -p ${redis_install_dir}
 +
cd ${redis_install_dir}
 +
mkdir -p redis_cluster
 +
cd redis_cluster
 +
mkdir data 7004 7005
 +
#cp /root/src/redis-5.0.5/redis.conf  .
 +
#cp redis.conf 7004/redis_7004.conf
 +
#mv redis.conf 7005/redis_7005.conf
 +
 
  
一些常用操作如下: - C-c C-t 变换TODO的状态 - C-c / t以树的形式展示所有的 TODO - C-c C-c 改变 checkbox状态 - C-c, 设置优先级(方括号里的ABC) - M-S-RET 插入同级TODO标
 
 
</pre>
 
</pre>
  
== 快速创建任务的操作==
+
=修改配置文件(三台机器6个配置)=
 
<pre>
 
<pre>
快捷键   功能                                           备注(return is enter)
+
note  日志在系统那  因为我们配置文件没指定 /var/log/redis/
 +
 
 +
ls /home/apps/redis/redis_cluster/data/
 +
appendonly-7000.aof  dump_7000.rdb  nodes_7000.conf
 +
appendonly-7001.aof  dump_7001.rdb  nodes_7001.conf
 +
# 生成在这里了  /home/apps/redis/redis_cluster/data/nodes_7000.conf  nodes_7001.conf
 +
 
 +
配置建议加上这个  下面这些配置还加上的
 +
# appendfsync always
 +
appendfsync everysec
 +
# appendfsync no
 +
 
 +
第一台:
 +
pushd /home/apps/redis/redis_cluster
 +
mkdir -p /var/log/redis
 +
: > 7000/redis_7000.conf
 +
#vi 7000/redis_7000.conf
 +
#非交互进行
 +
echo 'port 7000
 +
bind 192.168.10.211 127.0.0.1
 +
cluster-enabled yes
 +
appendfilename "appendonly-7000.aof"
 +
cluster-config-file nodes_7000.conf
 +
cluster-node-timeout 15000
 +
appendonly yes
 +
appendfsync everysec
 +
daemonize yes
 +
dbfilename dump_7000.rdb
 +
dir /data/apps/redis/redis_cluster/data
 +
logfile "/var/log/redis/7000.log"
 +
protected-mode yes
 +
pidfile /var/run/redis_7000.pid'>7000/redis_7000.conf
 +
 
  
M-<return> 在当前 headline 后建立一个同级 headline 无 headline 时创建一个一级 headline
+
:>7001/redis_7001.conf
 +
echo 'port 7001
 +
bind 192.168.10.211 127.0.0.1
 +
cluster-enabled yes
 +
appendfilename "appendonly-7001.aof"
 +
cluster-config-file nodes_7001.conf
 +
cluster-node-timeout 15000
 +
appendonly yes
 +
appendfsync everysec
 +
daemonize yes
 +
dbfilename dump_7001.rdb
 +
dir /home/apps/redis/redis_cluster/data
 +
logfile "/var/log/redis/7001.log"
 +
protected-mode yes
 +
pidfile /var/run/redis_7001.pid'>7001/redis_7001.conf
  
M-S-return 在当前任务后建立一个同级任务,标记为TODO(好像无效) 同下 (这个试过有效)
 
C-S-return 在当前任务的内容后面建立一个同级任务,标记为TODO 无任务时创建一级任务,标记为TODO
 
  
</pre>
+
第二台
 +
pushd /home/apps/redis/redis_cluster
 +
mkdir -p /var/log/redis
 +
:>7002/redis_7002.conf
 +
echo 'port 7002
 +
bind 192.168.10.212 127.0.0.1
 +
cluster-enabled yes
 +
appendfilename "appendonly-7002.aof"
 +
cluster-config-file nodes_7002.conf
 +
cluster-node-timeout 15000
 +
appendonly yes
 +
appendfsync everysec
 +
daemonize yes
 +
dbfilename dump_7002.rdb
 +
dir /home/apps/redis/redis_cluster/data
 +
logfile "/var/log/redis/7002.log"
 +
protected-mode yes
 +
pidfile /var/run/redis_7002.pid' >7002/redis_7002.conf
  
==自定义状态序列 ==
+
:>7003/redis_7003.conf
<pre>
+
echo 'port 7003
如果只想在某个文件中为其设置独有的关键词序列,那么可以在org文件的头部用"#+SEQ_TODO"来进行设置:
+
bind 192.168.10.212 127.0.0.1
 +
cluster-enabled yes
 +
appendfilename "appendonly-7003.aof"
 +
cluster-config-file nodes_7003.conf
 +
cluster-node-timeout 15000
 +
appendonly yes
 +
appendfsync everysec
 +
daemonize yes
 +
dbfilename dump_7003.rdb
 +
dir /home/apps/redis/redis_cluster/data
 +
logfile "/var/log/redis/7003.log"
 +
protected-mode yes
 +
pidfile /var/run/redis_7003.pid'>7003/redis_7003.conf
  
#+SEQ_TODO: TODO DOING DONE
 
  
 +
第3台
 +
pushd /home/apps/redis/redis_cluster
 +
mkdir -p /var/log/redis
 +
:>7004/redis_7004.conf
 +
echo 'port 7004
 +
bind 192.168.10.213 127.0.0.1
 +
cluster-enabled yes
 +
appendfilename "appendonly-7004.aof"
 +
cluster-config-file nodes_7004.conf
 +
cluster-node-timeout 15000
 +
appendonly yes
 +
appendfsync everysec
 +
daemonize yes
 +
dbfilename dump_7004.rdb
 +
dir /home/apps/redis/redis_cluster/data
 +
logfile "/var/log/redis/7004.log"
 +
protected-mode yes
 +
pidfile /var/run/redis_7004.pid ' > 7004/redis_7004.conf
  
#我的emacs 配置 .emacs
+
:>7005/redis_7005.conf
(setq org-todo-keywords '((sequence "TODO" "DOING" "DONE")))
+
echo 'port 7005
(setq org-todo-keyword-faces '(("TODO" . "red")
+
bind 192.168.10.213 127.0.0.1
                              ("DOING" . "yellow")
+
cluster-enabled yes
                              ("DONE" . "green")))
+
appendfilename "appendonly-7005.aof"
 +
cluster-config-file nodes_7005.conf
 +
cluster-node-timeout 15000
 +
appendonly yes
 +
daemonize yes
 +
dbfilename dump_7005.rdb
 +
dir /home/apps/redis/redis_cluster/data
 +
logfile "/var/log/redis/7005.log"
 +
protected-mode yes
 +
pidfile /var/run/redis_7005.pid' >7005/redis_7005.conf
  
 
</pre>
 
</pre>
 +
 +
=启动redis=
 +
<pre>
 +
#cd /usr/local/redis/etc/redis_cluster #on freebsd
  
  
=基本语法=
 
除了 headline 外,Org mode 还支持列表、文字修饰(粗体、斜体、下划线等)、代码块、引用等常见的功能
 
  
[http://www.zmonster.me/2015/07/12/org-mode-introduction.html 强大的Org mode(1):简单介绍与基本使用]
+
</pre>
  
==基本的任务管理==
+
=登陆redis=
 
<pre>
 
<pre>
快捷键         功能                                               备注
+
/home/apps/redis/bin/redis-cli  -c -h  192.168.10.211 -p 7000
C-c C-t       按照 无状态->TODO->DONE->无状态 的顺序更改任务状态 org-todo
+
redis-cli -h 10.3.10.141 -p 7001
Shift-<right> 同上
+
 
Shift-<left> 按照与 Shift-<right> 相反的顺序更改任务状态
+
redis-cli -h 10.3.10.142 -p 7002
 +
redis-cli -h 10.3.10.142 -p 7003
 +
 
 +
redis-cli -h 10.3.10.143 -p 7004
 +
redis-cli -h 10.3.10.143 -p 7005
 
</pre>
 
</pre>
 +
=创建集群=
 +
<pre>注意:在任意一台上运行 不要在每台机器上都运行,一台就够了
 +
#要开通端口  firewalld
  
[http://www.zmonster.me/2015/07/15/org-mode-planning.html 强大的Org mode(2):任务管理]
+
redis-cli --cluster create --cluster-replicas 1 192.168.10.211:7000 192.168.10.211:7001 192.168.10.212:7002 192.168.10.212:7003 192.168.10.213:7004  192.168.10.213:7005
 
+
#--replicas  1  表示 自动为每一个master节点分配一个slave节点    上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave()
== 标题编辑==
+
</pre>
 +
==执行详情==
 
<pre>
 
<pre>
M-S-LEFT/RIGHT 升级/降级标题树,即标题树内的各级标题相应升/降级
+
[root@dev-hello-1 redis_cluster]# redis-cli --cluster create --cluster-replicas 1 192.168.10.201:7000 192.168.10.201:7001 192.168.10.202:7002 192.168.10.202:7003 192.168.10.203:7004  192.168.10.203:7005
 +
>>> Performing hash slots allocation on 6 nodes...
 +
Master[0] -> Slots 0 - 5460
 +
Master[1] -> Slots 5461 - 10922
 +
Master[2] -> Slots 10923 - 16383
 +
Adding replica 192.168.10.202:7003 to 192.168.10.201:7000
 +
Adding replica 192.168.10.203:7005 to 192.168.10.202:7002
 +
Adding replica 192.168.10.201:7001 to 192.168.10.203:7004
 +
M: caf3a2c83f4f34498d9152161d3d62ca499094eb 192.168.10.201:7000
 +
  slots:[0-5460] (5461 slots) master
 +
S: ecbc0c648ff15c4ff2c176563afa580c7c8b7f3b 192.168.10.201:7001
 +
  replicates 3792aae886d957e1a0272bcd198a06798f05c26d
 +
M: 9c2f0b7827180d93371b493e8ca59b6eea776b0c 192.168.10.202:7002
 +
  slots:[5461-10922] (5462 slots) master
 +
S: b66f09b38e321ce3f8ee000b7cb40fe804f3a450 192.168.10.202:7003
 +
  replicates caf3a2c83f4f34498d9152161d3d62ca499094eb
 +
M: 3792aae886d957e1a0272bcd198a06798f05c26d 192.168.10.203:7004
 +
  slots:[10923-16383] (5461 slots) master
 +
S: a027592b56eb7477fe039786490318efdda8a0d6 192.168.10.203:7005
 +
  replicates 9c2f0b7827180d93371b493e8ca59b6eea776b0c
 +
Can I set the above configuration? (type 'yes' to accept): yes
 +
>>> Nodes configuration updated
 +
>>> Assign a different config epoch to each node
 +
>>> Sending CLUSTER MEET messages to join the cluster
 +
Waiting for the cluster to join
 +
....
 +
>>> Performing Cluster Check (using node 192.168.10.201:7000)
 +
M: caf3a2c83f4f34498d9152161d3d62ca499094eb 192.168.10.201:7000
 +
  slots:[0-5460] (5461 slots) master
 +
  1 additional replica(s)
 +
S: a027592b56eb7477fe039786490318efdda8a0d6 192.168.10.203:7005
 +
  slots: (0 slots) slave
 +
  replicates 9c2f0b7827180d93371b493e8ca59b6eea776b0c
 +
M: 3792aae886d957e1a0272bcd198a06798f05c26d 192.168.10.203:7004
 +
  slots:[10923-16383] (5461 slots) master
 +
  1 additional replica(s)
 +
M: 9c2f0b7827180d93371b493e8ca59b6eea776b0c 192.168.10.202:7002
 +
  slots:[5461-10922] (5462 slots) master
 +
  1 additional replica(s)
 +
S: ecbc0c648ff15c4ff2c176563afa580c7c8b7f3b 192.168.10.201:7001
 +
  slots: (0 slots) slave
 +
  replicates 3792aae886d957e1a0272bcd198a06798f05c26d
 +
S: b66f09b38e321ce3f8ee000b7cb40fe804f3a450 192.168.10.202:7003
 +
  slots: (0 slots) slave
 +
  replicates caf3a2c83f4f34498d9152161d3d62ca499094eb
 +
[OK] All nodes agree about slots configuration.
 +
>>> Check for open slots...
 +
>>> Check slots coverage...
 +
[OK] All 16384 slots covered.
 
</pre>
 
</pre>
  
https://blog.csdn.net/u014801157/article/details/24372485
+
=查看redis集群情况=
 
 
=== org 图片===
 
 
<pre>
 
<pre>
file://home/evan/wallpaper/f.jpg
+
redis-cli -h 192.168.10.211 -p 7000 cluster nodes
填写地址时 要 [[ ]] 不过显示时就没了
 
  
emacs gui 
+
a027592b56eb7477fe039786490318efdda8a0d6 192.168.10.203:7005@17005 slave 9c2f0b7827180d93371b493e8ca59b6eea776b0c 0 1567502665000 6 connected
 +
3792aae886d957e1a0272bcd198a06798f05c26d 192.168.10.203:7004@17004 master - 0 1567502666171 5 connected 10923-16383
 +
9c2f0b7827180d93371b493e8ca59b6eea776b0c 192.168.10.202:7002@17002 master - 0 1567502664166 3 connected 5461-10922
 +
ecbc0c648ff15c4ff2c176563afa580c7c8b7f3b 192.168.10.201:7001@17001 slave 3792aae886d957e1a0272bcd198a06798f05c26d 0 1567502664000 5 connected
 +
caf3a2c83f4f34498d9152161d3d62ca499094eb 192.168.10.201:7000@17000 myself,master - 0 1567502663000 1 connected 0-5460
 +
b66f09b38e321ce3f8ee000b7cb40fe804f3a450 192.168.10.202:7003@17003 slave caf3a2c83f4f34498d9152161d3d62ca499094eb 0 1567502665169 4 connected
  
alt+x  org-toggle-inline-images  回车就显示了  ,cli  下好像是不显示的  要images 什么的支持吧
+
</pre>
不过一般不用命令而是用快快捷 键
+
==cluster 完整性检查==
 
+
<pre>
  
显示图片 快键
+
redis-trib.rb check 10.3.10.140:7000
You can run the command ‘org-toggle-inline-images’ with C-c C-x C-v
+
redis-trib.rb check 10.3.10.140:7001
152 images displayed inline
+
redis-trib.rb check 10.3.10.140:7002
 +
redis-trib.rb check 10.3.10.140:7003
 +
redis-trib.rb check 10.3.10.140:7004
 +
redis-trib.rb check 10.3.10.140:7005
  
中文表达如下
+
结果如下  16384个槽都分配到了 节点
使用如下标签插入图片,使用C-c C-x C-v inline方式显示图片,或者使用C-c C-o打开链接。
 
[[file:a.png]]
 
 
 
#添加到 .emacs ; iimage-mode 听说现在是内置的了
 
;; 显示图片
 
(auto-image-file-mode t)
 
(defun do-org-show-all-inline-images ()
 
  (interactive)
 
  (org-display-inline-images t t))
 
(global-set-key (kbd "C-c C-x C v")
 
                'do-org-show-all-inline-images)
 
  
 +
[OK] All nodes agree about slots configuration.
 +
>>> Check for open slots...
 +
>>> Check slots coverage...
 +
[OK] All 16384 slots covered.
 
</pre>
 
</pre>
  
=see aslo=
+
==测试 ==
 +
<pre>
 +
 
 +
redis-cli -c -h  192.168.10.201 -p 7000
  
[https://blog.csdn.net/u014801157/article/details/24372485 Emacs月月积累(终结篇):熟练使用org-mode管理日常事务]
+
[root@dev-hello-1 redis_cluster]# redis-cli -c -h  192.168.10.201 -p 7000
 +
192.168.10.201:7000> set evan 36
 +
-> Redirected to slot [14924] located at 192.168.10.203:7004
 +
OK
 +
192.168.10.203:7004>
  
 +
[root@dev-hello-2 redis_cluster]# redis-cli -c -h  192.168.10.202 -p 7002
 +
192.168.10.202:7002> get evan
 +
-> Redirected to slot [14924] located at 192.168.10.203:7004
 +
"36"
 +
192.168.10.203:7004>
  
[https://blog.csdn.net/u014801157/article/details/24372485 Emacs月月积累(终结篇):熟练使用org-mode管理日常事务]
+
dev-hello-3 redis_cluster]#  redis-cli -c -h  192.168.10.203  -p 7005
 +
192.168.10.203:7005> get evan
 +
-> Redirected to slot [14924] located at 192.168.10.203:7004
 +
"36"
 +
192.168.10.203:7004>
  
[https://i.linuxtoy.org/docs/guide/ch32s03.html#id3155525 第 32 章 组织你的意念:Emacs org mode]
+
测试通过了
 +
</pre>
  
[http://www.zmonster.me/2015/07/12/org-mode-introduction.html 强大的Org mode(1):简单介绍与基本使用]
+
=添加redis集群密码=
 +
==方式一:修改所有Redis集群中的redis.conf文件加入==
 +
<pre>
 +
# NOTE  还是这个办法好  不然可能有些 没加载到配置文件去呢
 +
masterauth passwd123
 +
requirepass passwd123
 +
说明:这种方式需要重新启动各节点
 +
</pre>
  
[https://i.linuxtoy.org/docs/guide/ch32s03.html#id3155525 Emacs org mode]
+
==方式二:进入各个实例进行设置  就是所有节点:==
 +
<pre>
 +
redis-cli -c -h 10.3.10.141 -p 7001
 +
#好像不能一起执行
 +
config set masterauth 36DbRGvv
 +
config set requirepass 36DbRGvv
 +
auth  36DbRGvv
 +
config rewrite
  
[https://www.cnblogs.com/qlwy/archive/2012/06/15/2551034.html#sec-1 神器中的神器org-mode之入门篇]
+
添加redis集群密码 一开始忘记加-c 导致 143 两个都加不上了  redis本身的密码这样就有了
  
[http://www.cnblogs.com/Open_Source/archive/2011/07/17/2108747.html Org-mode 简明手册]
+
-a 后 再执行命令就再 auth , 而如果是进入后 auth password 要每次 都再验证一下密码 麻烦
  
[http://www.cnblogs.com/holbrook/archive/2012/04/12/2444992.html org-mode: 最好的文档编辑利器,没有之一]
+
</pre>
  
[https://www.jianshu.com/p/32501603970d 用1天快速上手org-mode]
 
  
[https://emacs-china.org/t/org-mode/204 如何使用 Org-mode 来计划一天的工作]
+
=开机自己启动=
 +
<pre>
 +
vi /apps/redis/redis_cluster/run
  
[http://fuzihao.org/blog/2015/02/19/org-mode%E6%95%99%E7%A8%8B/ org-mode入门教程]
+
/apps/redis/bin/redis-server /home/apps/redis/redis_cluster/7004/redis_7004.conf
 +
/apps/redis/bin/redis-server /home/apps/redis/redis_cluster/7005/redis_7005.conf
  
[http://www.cnblogs.com/holbrook/archive/2012/04/14/2447754.html Org-mode,最强的任务管理利器,没有之一]
+
chmod  +x  /apps/redis/redis_cluster/run
 +
chmod +x /etc/rc.d/rc.local
  
 +
vi  /etc/rc.d/rc.local
 +
/apps/redis/redis_cluster/run
  
[https://phower.me/project/500/460731605/ 使用Org-Mode&Git-Hook自动部署Wiki]
 
  
https://ox-hugo.scripter.co/
+
</pre>
 +
=开启关闭=
 +
<pre>
 +
redis-cli -a xxx -c -h 192.168.0.60 -p 8001 shutdown  #集群cluster_state变成了fail状态?
  
  
[http://www.cnblogs.com/holbrook/archive/2012/04/17/2454619.html 用Org-mode实现GTD]
 
  
[https://blog.csdn.net/u011729865/article/details/54236547 spacemacs org-mode配置GTD]
+
</pre>
  
[https://emacs-china.org/t/topic/5013/10 一个实际可用的 org-mode 轻度GTD 方案]
+
=troubleshooting=
 +
<pre>
 +
ISCONF Errors writing to the AOF file: No space left on device; nested exception is redis.clients.jedis.exceptions.JedisDataException: MISCONF Errors writing to the AOF file: No space left on device
  
 +
org.springframework.dao.InvalidDataAccessApiUsageException: MISCONF Errors writing to the AOF file: No space left on device; nested exception is redis.clients.jedis.exceptions.JedisDataException: MISCONF Errors writing to the AOF file: No space left on device
  
[http://smallzhan.github.io/emacs/2018/05/30/p-org-mode-orgbabel.html Org mode 和 Org-babel 的那些事(二)]
+
原因 有一个台redis的机器 空间100%
  
[https://zh.wikipedia.org/wiki/Org-%E6%A8%A1%E5%BC%8F org-mode meawiki]
+
</pre>
  
[https://www.zhihu.com/question/19851600/answer/17893051 Org-mode、reST、 Markdown 各有什么优缺点]
+
=see also=
 +
[https://blog.51cto.com/kerry/2316700 redis-5.0 cluster带认证及客户端连接]
  
[[category:emacs]]
+
[https://www.jianshu.com/p/8045b92fafb2 Redis 5 之后版本的高可用集群搭建]
 +
[[category:ops]] [[category:redis]]

2019年11月13日 (三) 02:51的版本

节点信息

角色                        主机名                                                             IP1               IP2       

7000  7001               01                   192.168.10.211     
7002  7003               02                   192.168.10.212      
7004  7005               03                   192.168.10.213      

姐妹篇 Redis4 cluster

防火墙设置

第一台:
firewall-cmd --permanent --add-port=7000/tcp
firewall-cmd --permanent --add-port=17000/tcp
firewall-cmd --permanent --add-port=7001/tcp
firewall-cmd --permanent --add-port=17001/tcp
firewall-cmd --reload
firewall-cmd --list-all-zones
第二台:
firewall-cmd --permanent --add-port=7002/tcp
firewall-cmd --permanent --add-port=17002/tcp
firewall-cmd --permanent --add-port=7003/tcp
firewall-cmd --permanent --add-port=17003/tcp
firewall-cmd --reload
firewall-cmd --list-all-zones
第三台:
firewall-cmd --permanent --add-port=7004/tcp
firewall-cmd --permanent --add-port=17004/tcp
firewall-cmd --permanent --add-port=7005/tcp
firewall-cmd --permanent --add-port=17005/tcp
firewall-cmd --reload
firewall-cmd --list-all-zones

系统参数设置

#vi /etc/sysctl.conf
echo 'vm.overcommit_memory = 1
net.core.somaxconn = 1024' >>/etc/sysctl.conf

/sbin/sysctl -p /etc/sysctl.conf

redis 5 安装

#bash redisins.sh 2>&1 | tee redislog

wget -c http://download.redis.io/releases/redis-5.0.6.tar.gz
#set var
redis_install_dir=/data/apps/redis
redis_ver=5.0.6

THREAD=4
tar xzf redis-${redis_ver}.tar.gz
pushd redis-${redis_ver} > /dev/null

make  -j ${THREAD}

make PREFIX=${redis_install_dir} 
make distclean
#cd src && make install #这个才行 特别是cluster ? 2019年 8月16日 星期五 23时29分41秒 CST
make install  PREFIX=${redis_install_dir}  
echo 'export PATH=${redis_install_dir}/bin/:$PATH' >> /etc/profile && source /etc/profile

####**********************下面是老的
wget -c http://download.redis.io/releases/redis-5.0.5.tar.gz
redis_install_dir=/home/apps/redis
redis_ver=5.0.5

THREAD=4
tar xzf redis-${redis_ver}.tar.gz
pushd redis-${redis_ver} > /dev/null
make  -j ${THREAD}
make PREFIX=/home/apps/redis #here
make distclean
#cd src && make install #这个才行 特别是cluster ? 2019年 8月16日 星期五 23时29分41秒 CST
make install  PREFIX=/home/apps/redis  # make install #这个有时没有创建出目录来呀

#这个我没做 根本没用 哈哈 
#复制rb 或者放到安装的bin目录 然后再加path 
#cp /opt/redis-5.0.0/src/redis-trib.rb /usr/local/bin

echo 'export PATH=/home/apps/redis/bin/:$PATH' >> /etc/profile && source /etc/profile
##**********************上面是老的
NOTE
redis5 用redis-cli创建整个redis集群(redis5以前的版本集群是依靠ruby脚本redis-trib.rb实现

创建节点

#第一台:192.168.10.211 #here
redis_install_dir=/data/apps/redis
 mkdir -p ${redis_install_dir}
cd ${redis_install_dir} 
mkdir -p redis_cluster
cd redis_cluster
mkdir data 7000 7001

#cp /root/src/redis-5.0.5/redis.conf  ${redis_install_dir}/redis_cluster
#cd  /home/apps/redis/redis_cluster
#cp redis.conf 7000/redis_7000.conf
#mv redis.conf  7001/redis_7001.conf


#第2台:192.168.10.212
redis_install_dir=/data/apps/redis
mkdir -p ${redis_install_dir}
cd ${redis_install_dir} 
mkdir -p redis_cluster
cd redis_cluster
mkdir data 7002 7003

#cp /root/src/redis-5.0.5/redis.conf  .
#cp  redis.conf 7002/redis_7002.conf
#mv redis.conf  7003/redis_7003.conf


#第3台:192.168.10.213
redis_install_dir=/data/apps/redis
mkdir -p ${redis_install_dir}
cd ${redis_install_dir} 
mkdir -p redis_cluster
cd redis_cluster
mkdir data 7004 7005
#cp /root/src/redis-5.0.5/redis.conf  .
#cp redis.conf 7004/redis_7004.conf
#mv redis.conf 7005/redis_7005.conf


修改配置文件(三台机器6个配置)

note  日志在系统那  因为我们配置文件没指定 /var/log/redis/

ls /home/apps/redis/redis_cluster/data/
appendonly-7000.aof  dump_7000.rdb  nodes_7000.conf
appendonly-7001.aof  dump_7001.rdb  nodes_7001.conf
# 生成在这里了  /home/apps/redis/redis_cluster/data/nodes_7000.conf  nodes_7001.conf

配置建议加上这个  下面这些配置还加上的 
# appendfsync always
appendfsync everysec
# appendfsync no

第一台:
 pushd /home/apps/redis/redis_cluster
mkdir -p /var/log/redis
: > 7000/redis_7000.conf
#vi 7000/redis_7000.conf
#非交互进行
echo 'port 7000
bind 192.168.10.211 127.0.0.1
cluster-enabled yes
appendfilename "appendonly-7000.aof"
cluster-config-file nodes_7000.conf 
cluster-node-timeout 15000
appendonly yes
appendfsync everysec
daemonize yes
dbfilename dump_7000.rdb
dir /data/apps/redis/redis_cluster/data 
logfile "/var/log/redis/7000.log"
protected-mode yes
pidfile /var/run/redis_7000.pid'>7000/redis_7000.conf


:>7001/redis_7001.conf
echo 'port 7001
bind 192.168.10.211 127.0.0.1
cluster-enabled yes
appendfilename "appendonly-7001.aof"
cluster-config-file nodes_7001.conf
cluster-node-timeout 15000
appendonly yes
appendfsync everysec
daemonize yes
dbfilename dump_7001.rdb
dir /home/apps/redis/redis_cluster/data 
logfile "/var/log/redis/7001.log"
protected-mode yes
pidfile /var/run/redis_7001.pid'>7001/redis_7001.conf


第二台 
 pushd /home/apps/redis/redis_cluster
mkdir -p /var/log/redis
:>7002/redis_7002.conf
echo 'port 7002
bind 192.168.10.212 127.0.0.1
cluster-enabled yes
appendfilename "appendonly-7002.aof"
cluster-config-file nodes_7002.conf
cluster-node-timeout 15000
appendonly yes
appendfsync everysec
daemonize yes
dbfilename dump_7002.rdb
dir /home/apps/redis/redis_cluster/data 
logfile "/var/log/redis/7002.log"
protected-mode yes
pidfile /var/run/redis_7002.pid' >7002/redis_7002.conf

:>7003/redis_7003.conf
echo 'port 7003
bind 192.168.10.212 127.0.0.1
cluster-enabled yes
appendfilename "appendonly-7003.aof"
cluster-config-file nodes_7003.conf
cluster-node-timeout 15000
appendonly yes
appendfsync everysec
daemonize yes
dbfilename dump_7003.rdb
dir /home/apps/redis/redis_cluster/data 
logfile "/var/log/redis/7003.log"
protected-mode yes
pidfile /var/run/redis_7003.pid'>7003/redis_7003.conf


第3台
 pushd /home/apps/redis/redis_cluster
mkdir -p /var/log/redis
:>7004/redis_7004.conf
echo 'port 7004
bind 192.168.10.213 127.0.0.1
cluster-enabled yes
appendfilename "appendonly-7004.aof"
cluster-config-file nodes_7004.conf
cluster-node-timeout 15000
appendonly yes
appendfsync everysec
daemonize yes
dbfilename dump_7004.rdb
dir /home/apps/redis/redis_cluster/data 
logfile "/var/log/redis/7004.log"
protected-mode yes
pidfile /var/run/redis_7004.pid ' > 7004/redis_7004.conf

:>7005/redis_7005.conf
echo 'port 7005
bind 192.168.10.213 127.0.0.1
cluster-enabled yes
appendfilename "appendonly-7005.aof"
cluster-config-file nodes_7005.conf
cluster-node-timeout 15000
appendonly yes
daemonize yes
dbfilename dump_7005.rdb
dir /home/apps/redis/redis_cluster/data 
logfile "/var/log/redis/7005.log"
protected-mode yes
pidfile /var/run/redis_7005.pid' >7005/redis_7005.conf

启动redis

#cd /usr/local/redis/etc/redis_cluster #on freebsd



登陆redis

/home/apps/redis/bin/redis-cli  -c -h  192.168.10.211 -p 7000
redis-cli -h 10.3.10.141 -p 7001

redis-cli -h 10.3.10.142 -p 7002
redis-cli -h 10.3.10.142 -p 7003

redis-cli -h 10.3.10.143 -p 7004
redis-cli -h 10.3.10.143 -p 7005

创建集群

注意:在任意一台上运行 不要在每台机器上都运行,一台就够了
#要开通端口  firewalld

redis-cli --cluster create --cluster-replicas 1 192.168.10.211:7000 192.168.10.211:7001 192.168.10.212:7002 192.168.10.212:7003 192.168.10.213:7004  192.168.10.213:7005
#--replicas  1  表示 自动为每一个master节点分配一个slave节点    上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)

执行详情

 [root@dev-hello-1 redis_cluster]# redis-cli --cluster create --cluster-replicas 1 192.168.10.201:7000 192.168.10.201:7001 192.168.10.202:7002 192.168.10.202:7003 192.168.10.203:7004  192.168.10.203:7005
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.10.202:7003 to 192.168.10.201:7000
Adding replica 192.168.10.203:7005 to 192.168.10.202:7002
Adding replica 192.168.10.201:7001 to 192.168.10.203:7004
M: caf3a2c83f4f34498d9152161d3d62ca499094eb 192.168.10.201:7000
   slots:[0-5460] (5461 slots) master
S: ecbc0c648ff15c4ff2c176563afa580c7c8b7f3b 192.168.10.201:7001
   replicates 3792aae886d957e1a0272bcd198a06798f05c26d
M: 9c2f0b7827180d93371b493e8ca59b6eea776b0c 192.168.10.202:7002
   slots:[5461-10922] (5462 slots) master
S: b66f09b38e321ce3f8ee000b7cb40fe804f3a450 192.168.10.202:7003
   replicates caf3a2c83f4f34498d9152161d3d62ca499094eb
M: 3792aae886d957e1a0272bcd198a06798f05c26d 192.168.10.203:7004
   slots:[10923-16383] (5461 slots) master
S: a027592b56eb7477fe039786490318efdda8a0d6 192.168.10.203:7005
   replicates 9c2f0b7827180d93371b493e8ca59b6eea776b0c
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
....
>>> Performing Cluster Check (using node 192.168.10.201:7000)
M: caf3a2c83f4f34498d9152161d3d62ca499094eb 192.168.10.201:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: a027592b56eb7477fe039786490318efdda8a0d6 192.168.10.203:7005
   slots: (0 slots) slave
   replicates 9c2f0b7827180d93371b493e8ca59b6eea776b0c
M: 3792aae886d957e1a0272bcd198a06798f05c26d 192.168.10.203:7004
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 9c2f0b7827180d93371b493e8ca59b6eea776b0c 192.168.10.202:7002
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: ecbc0c648ff15c4ff2c176563afa580c7c8b7f3b 192.168.10.201:7001
   slots: (0 slots) slave
   replicates 3792aae886d957e1a0272bcd198a06798f05c26d
S: b66f09b38e321ce3f8ee000b7cb40fe804f3a450 192.168.10.202:7003
   slots: (0 slots) slave
   replicates caf3a2c83f4f34498d9152161d3d62ca499094eb
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看redis集群情况

redis-cli -h 192.168.10.211 -p 7000 cluster nodes

a027592b56eb7477fe039786490318efdda8a0d6 192.168.10.203:7005@17005 slave 9c2f0b7827180d93371b493e8ca59b6eea776b0c 0 1567502665000 6 connected
3792aae886d957e1a0272bcd198a06798f05c26d 192.168.10.203:7004@17004 master - 0 1567502666171 5 connected 10923-16383
9c2f0b7827180d93371b493e8ca59b6eea776b0c 192.168.10.202:7002@17002 master - 0 1567502664166 3 connected 5461-10922
ecbc0c648ff15c4ff2c176563afa580c7c8b7f3b 192.168.10.201:7001@17001 slave 3792aae886d957e1a0272bcd198a06798f05c26d 0 1567502664000 5 connected
caf3a2c83f4f34498d9152161d3d62ca499094eb 192.168.10.201:7000@17000 myself,master - 0 1567502663000 1 connected 0-5460
b66f09b38e321ce3f8ee000b7cb40fe804f3a450 192.168.10.202:7003@17003 slave caf3a2c83f4f34498d9152161d3d62ca499094eb 0 1567502665169 4 connected

cluster 完整性检查


redis-trib.rb check 10.3.10.140:7000
redis-trib.rb check 10.3.10.140:7001
redis-trib.rb check 10.3.10.140:7002
redis-trib.rb check 10.3.10.140:7003
redis-trib.rb check 10.3.10.140:7004
redis-trib.rb check 10.3.10.140:7005

结果如下  16384个槽都分配到了 节点 

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

测试

  
redis-cli -c -h  192.168.10.201 -p 7000

[root@dev-hello-1 redis_cluster]# redis-cli -c -h  192.168.10.201 -p 7000
192.168.10.201:7000> set evan 36
-> Redirected to slot [14924] located at 192.168.10.203:7004
OK
192.168.10.203:7004> 

[root@dev-hello-2 redis_cluster]# redis-cli -c -h  192.168.10.202 -p 7002
192.168.10.202:7002> get evan 
-> Redirected to slot [14924] located at 192.168.10.203:7004
"36"
192.168.10.203:7004> 

dev-hello-3 redis_cluster]#  redis-cli -c -h  192.168.10.203  -p 7005
192.168.10.203:7005> get evan
-> Redirected to slot [14924] located at 192.168.10.203:7004
"36"
192.168.10.203:7004>

测试通过了 

添加redis集群密码

方式一:修改所有Redis集群中的redis.conf文件加入

 
# NOTE   还是这个办法好  不然可能有些 没加载到配置文件去呢 
masterauth passwd123 
requirepass passwd123 
说明:这种方式需要重新启动各节点

方式二:进入各个实例进行设置 就是所有节点:

 
redis-cli -c -h 10.3.10.141 -p 7001
#好像不能一起执行
config set masterauth 36DbRGvv 
config set requirepass 36DbRGvv 
auth  36DbRGvv
config rewrite 

添加redis集群密码 一开始忘记加-c 导致 143 两个都加不上了  redis本身的密码这样就有了

-a 后 再执行命令就再 auth , 而如果是进入后 auth password 要每次 都再验证一下密码 麻烦 


开机自己启动

vi /apps/redis/redis_cluster/run

/apps/redis/bin/redis-server /home/apps/redis/redis_cluster/7004/redis_7004.conf
/apps/redis/bin/redis-server /home/apps/redis/redis_cluster/7005/redis_7005.conf

chmod  +x  /apps/redis/redis_cluster/run
chmod +x /etc/rc.d/rc.local

 vi  /etc/rc.d/rc.local
/apps/redis/redis_cluster/run


开启关闭

redis-cli -a xxx -c -h 192.168.0.60 -p 8001 shutdown  #集群cluster_state变成了fail状态?



troubleshooting

ISCONF Errors writing to the AOF file: No space left on device; nested exception is redis.clients.jedis.exceptions.JedisDataException: MISCONF Errors writing to the AOF file: No space left on device

org.springframework.dao.InvalidDataAccessApiUsageException: MISCONF Errors writing to the AOF file: No space left on device; nested exception is redis.clients.jedis.exceptions.JedisDataException: MISCONF Errors writing to the AOF file: No space left on device

原因 有一个台redis的机器 空间100% 

see also

redis-5.0 cluster带认证及客户端连接

Redis 5 之后版本的高可用集群搭建