[{"data":1,"prerenderedAt":359},["ShallowReactive",2],{"navigation":3,"post-\u002Fposts\u002F2016\u002Fredis-windows-sentinel":20,"surroundPosts-\u002Fposts\u002F2016\u002Fredis-windows-sentinel":347},[4,8,12,16],{"title":5,"path":6,"stem":7},"首页","\u002F","00.index",{"title":9,"path":10,"stem":11},"文章","\u002Fposts","01.posts",{"title":13,"path":14,"stem":15},"动态","\u002Fmoments","02.moments",{"title":17,"path":18,"stem":19},"关于","\u002Fabout","09.about",{"id":21,"title":22,"body":23,"class":327,"cover":327,"coverSize":327,"date":328,"description":29,"draft":329,"extension":330,"hideComments":329,"location":331,"meta":332,"navigation":333,"path":334,"readingTime":335,"seo":340,"sitemap":341,"stem":342,"tags":343,"time":345,"weather":327,"__hash__":346},"posts\u002Fposts\u002F2016\u002F20161023.redis-windows-sentinel.md","Windoows 下 Redis Sentinel 的部署",{"type":24,"value":25,"toc":325},"minimark",[26,30,35,45,48,59,62,83,90,94,97,103,106,113,117,120,123,153,156,172,175,191,194,221,224,246,249,265,268,283,286,311,315,318,321],[27,28,29],"p",{},"虽然很久之前就了解了 Redis 的哨兵机制，今天第一次尝试在多个服务器上部署多个 Redis 实例，并且设置了哨兵用来进行自动的主从切换。",[31,32,34],"h4",{"id":33},"一部署-redis","一、部署 Redis",[27,36,37,38,44],{},"在 3 台服务器上分别安装了 Redis，Redis on Windows 下载地址：",[39,40,41],"a",{"href":41,"rel":42},"https:\u002F\u002Fgithub.com\u002FMSOpenTech\u002Fredis\u002Freleases",[43],"nofollow","。",[27,46,47],{},"配置文件添加密码：",[49,50,55],"pre",{"className":51,"code":53,"language":54},[52],"language-text","requirepass \u003C密码>\nmasterauth \u003C密码>\n","text",[56,57,53],"code",{"__ignoreMap":58},"",[27,60,61],{},"除了设置本实例的密码外，还需要输入 master 的密码（需要和本实例密码相同），所有实例需要设置相同的密码，以便进行主从切换。",[27,63,64,65,68,69,71,72,75,76,79,80,82],{},"需要注意的是，Redis 从某个版本起，加入了一个",[56,66,67],{},"protected-mode","的保护模式。启动保护模式的条件是",[56,70,67],{},"开启，且没有设置",[56,73,74],{},"bind","，且没有设置密码。我的 Redis 的实例部署在多个公网服务器下，所以加密码是必须的，另外需要注释掉默认的",[56,77,78],{},"bind 127.0.0.1","，以使用公网 IP。因为设置了密码，所以",[56,81,67],{},"就无需进行改动，直接使用默认的就可以了。但是在后面哨兵的配置中的保护模式会有一个坑。",[27,84,85,86,89],{},"在 3 个 Redis 实例中挑选一个作为初始的 master。在另外两个实例的配置文件中，加入",[56,87,88],{},"slaveof","的配置。",[31,91,93],{"id":92},"二配置-sentinel","二、配置 Sentinel",[27,95,96],{},"创建哨兵的配置文件，内容如下：",[49,98,101],{"className":99,"code":100,"language":54},[52],"port \u003C端口号>\n\nsentinel monitor redis-master \u003CMaster IP> \u003CMaster端口号> 2\n\nsentinel down-after-milliseconds redis-master 5000\n\nsentinel failover-timeout redis-master 900000\n\nsentinel parallel-syncs redis-master 2\n\nsentinel auth-pass redis-master \u003C密码>\n\nlogfile \"LogFiles\u002Fmonkeyrun-sentinel.log\"\n\nprotected-mode no\n",[56,102,100],{"__ignoreMap":58},[27,104,105],{},"具体参数的含义不再赘述，可以 Google。",[27,107,108,109,112],{},"这里需要加上最后一行",[56,110,111],{},"protected-mode no","，把哨兵的保护模式关掉。因为哨兵目前不支持设置密码，如果不加这行就会启动保护模式了，外网无法访问，会出现哨兵与哨兵之间互相认为对方不可用的情况。",[31,114,116],{"id":115},"三一些命令","三、一些命令",[27,118,119],{},"因为是在 Windows 下，有些命令可以通过批处理文件方便处理。将如下代码分别保存为.bat 文件，可以直接双击执行。默认安装完会新建一个名叫 Redis 的服务，我不喜欢这个名字，可以先卸载这个默认的 Redis 服务，然后重新安装自己命名的服务。这样的好处是以后可以在一台服务器上安装多个不同用途的 Redis 实例，以便区分。",[27,121,122],{},"1、安装 Redis 服务",[49,124,128],{"className":125,"code":126,"language":127,"meta":58,"style":58},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","redis-server --service-install redis-service-monkey-run.conf --service-name redis-service-monkey-run\n","bash",[56,129,130],{"__ignoreMap":58},[131,132,135,139,143,147,150],"span",{"class":133,"line":134},"line",1,[131,136,138],{"class":137},"sbgvK","redis-server",[131,140,142],{"class":141},"stzsN"," --service-install",[131,144,146],{"class":145},"s_sjI"," redis-service-monkey-run.conf",[131,148,149],{"class":141}," --service-name",[131,151,152],{"class":145}," redis-service-monkey-run\n",[27,154,155],{},"2、启动 Redis 服务",[49,157,159],{"className":125,"code":158,"language":127,"meta":58,"style":58},"redis-server --service-start --service-name redis-service-monkey-run\n",[56,160,161],{"__ignoreMap":58},[131,162,163,165,168,170],{"class":133,"line":134},[131,164,138],{"class":137},[131,166,167],{"class":141}," --service-start",[131,169,149],{"class":141},[131,171,152],{"class":145},[27,173,174],{},"3、停止 Redis 服务",[49,176,178],{"className":125,"code":177,"language":127,"meta":58,"style":58},"redis-server --service-stop --service-name redis-service-monkey-run\n",[56,179,180],{"__ignoreMap":58},[131,181,182,184,187,189],{"class":133,"line":134},[131,183,138],{"class":137},[131,185,186],{"class":141}," --service-stop",[131,188,149],{"class":141},[131,190,152],{"class":145},[27,192,193],{},"4、卸载 Redis 服务",[49,195,197],{"className":125,"code":196,"language":127,"meta":58,"style":58},"redis-server --service-stop --service-name redis-service-monkey-run\nredis-server --service-uninstall --service-name redis-service-monkey-run\n",[56,198,199,209],{"__ignoreMap":58},[131,200,201,203,205,207],{"class":133,"line":134},[131,202,138],{"class":137},[131,204,186],{"class":141},[131,206,149],{"class":141},[131,208,152],{"class":145},[131,210,212,214,217,219],{"class":133,"line":211},2,[131,213,138],{"class":137},[131,215,216],{"class":141}," --service-uninstall",[131,218,149],{"class":141},[131,220,152],{"class":145},[27,222,223],{},"5、安装 Sentinel 服务",[49,225,227],{"className":125,"code":226,"language":127,"meta":58,"style":58},"redis-server --service-install sentinel-monkey-run.conf --service-name redis-sentinel-service-monkey-run --sentinel\n",[56,228,229],{"__ignoreMap":58},[131,230,231,233,235,238,240,243],{"class":133,"line":134},[131,232,138],{"class":137},[131,234,142],{"class":141},[131,236,237],{"class":145}," sentinel-monkey-run.conf",[131,239,149],{"class":141},[131,241,242],{"class":145}," redis-sentinel-service-monkey-run",[131,244,245],{"class":141}," --sentinel\n",[27,247,248],{},"6、启动 Sentinel 服务",[49,250,252],{"className":125,"code":251,"language":127,"meta":58,"style":58},"redis-server --service-start --service-name redis-sentinel-service-monkey-run\n",[56,253,254],{"__ignoreMap":58},[131,255,256,258,260,262],{"class":133,"line":134},[131,257,138],{"class":137},[131,259,167],{"class":141},[131,261,149],{"class":141},[131,263,264],{"class":145}," redis-sentinel-service-monkey-run\n",[27,266,267],{},"7、停止 Sentinel 服务",[49,269,271],{"className":125,"code":270,"language":127,"meta":58,"style":58},"redis-server --service-stop --service-name redis-sentinel-service-monkey-run\n",[56,272,273],{"__ignoreMap":58},[131,274,275,277,279,281],{"class":133,"line":134},[131,276,138],{"class":137},[131,278,186],{"class":141},[131,280,149],{"class":141},[131,282,264],{"class":145},[27,284,285],{},"8、卸载 Sentinel 服务",[49,287,289],{"className":125,"code":288,"language":127,"meta":58,"style":58},"redis-server --service-stop --service-name redis-sentinel-service-monkey-run\nredis-server --service-uninstall --service-name redis-sentinel-service-monkey-run\n",[56,290,291,301],{"__ignoreMap":58},[131,292,293,295,297,299],{"class":133,"line":134},[131,294,138],{"class":137},[131,296,186],{"class":141},[131,298,149],{"class":141},[131,300,264],{"class":145},[131,302,303,305,307,309],{"class":133,"line":211},[131,304,138],{"class":137},[131,306,216],{"class":141},[131,308,149],{"class":141},[131,310,264],{"class":145},[31,312,314],{"id":313},"四其他","四、其他",[27,316,317],{},"验证了一下哨兵的主从切换，很爽！",[27,319,320],{},"睡觉！",[322,323,324],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":58,"searchDepth":211,"depth":211,"links":326},[],null,"2016-10-23",false,"md","老家",{},true,"\u002Fposts\u002F2016\u002Fredis-windows-sentinel",{"text":336,"minutes":337,"time":338,"words":339},"4 min read",3.485,209100,697,{"title":22,"description":29},{"loc":334},"posts\u002F2016\u002F20161023.redis-windows-sentinel",[344],"技术","凌晨","-ccA1alUlUH92vmCjZ2FbJ80LqhCHW4CcyhYVqLQdqg",[348,354],{"title":349,"path":350,"stem":351,"date":352,"description":353,"children":-1},"解决阿里云 CDN 回源 https 返回 503 错误的问题","\u002Fposts\u002F2016\u002Faliyun-cdn-not-support-sni","posts\u002F2016\u002F20161109.aliyun-cdn-not-support-sni","2016-11-09","最近打算把www.monkeyrun.net改成全站 https，使用的Let’s Encrypt的证书。然而在设置阿里云 CDN 的时候，阿里云 CDN 回源一直返回 503 错误，发工单，来来回回经过整整两天，终于把问题解决。容我娓娓道来。",{"title":355,"path":356,"stem":357,"date":328,"description":358,"children":-1},"更新 Microsoft.NETCore.App 到 1.0.1 出现 502.5 错误的问题","\u002Fposts\u002F2016\u002Fupgrade-to-net-core-app-1-0-1-problem","posts\u002F2016\u002F20161023.upgrade-to-net-core-app-1-0-1-problem","今天白天遇到一个问题，花了很长时间才解决。记录下。",1777580284778]