<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                #### [原文地址](http://www.cnblogs.com/reblue520/p/6874925.html "原文地址"),非常感謝鄭子明的分享。 #### Codis簡介 Codis 是一個分布式 Redis 解決方案, 對于上層的應用來說, 連接到 Codis Proxy 和連接原生的 Redis Server 沒有明顯的區別 (不支持的命令列表https://github.com/CodisLabs/codis/blob/release3.2/doc/unsupported_cmds.md), 上層應用可以像使用單機的 Redis 一樣使用, Codis 底層會處理請求的轉發, 不停機的數據遷移等工作, 所有后邊的一切事情, 對于前面的客戶端來說是透明的, 可以簡單的認為后邊連接的是一個內存無限大的 Redis 服務: Codis是豌豆莢的開源方案,目前在redis集群實現方式對比,codis集群比較穩定的方案,并且客戶端不需要做任何修改,相對redis cluster兼容性更強,可節約大量開發成本并減少大量后期維護成本, 主要由以下特點: - 可以無縫遷移到codis,自帶遷移工具,并且案例較多 - 可以動態擴容和縮容 - 多業務完全透明,業務不知道運行的是codis - 支持多核心CPU,twemproxy只能單核 - codis是中心基于proxy的設計,是客戶端像連接單機一樣操作proxy - 有部分命令不能支持,比如keys *等 - 支持group劃分,組內可以設置一個主多個從,通過sentinel 監控redis主從,當主down了自動將從切換為主 - 設置的進程要最大等于CPU的核心,不能超過CPU的核心數 - 其依賴于zookeeper,里面保存的是key保存的redis主機位置,因此zookeeper要做高可用 - 監控可以使用接口和dashboard ![](https://box.kancloud.cn/7d723b4ad0d167ef41595986c165fd36_2614x1302.png) #### 環境介紹 ![](https://box.kancloud.cn/91ed171d4993680f2574b25775a2f91d_713x400.png) #### 環境初始化 ##### Go語言環境安裝 ```shell cd /opt/ wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz tar xzf go1.8.1.linux-amd64.tar.gz mv go /usr/local/ mkdir /usr/local/go/work cat >> /etc/profile <<EOF export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=/usr/local/go/work EOF . /etc/profile go version go version go1.8.1 linux/amd64 ``` #### Zookeeper部署(詳見zookeeper章節) #### Codis部署 ##### 源碼部署 ##### 二進制部署 下載并建立目錄 ```shell cd /opt wget https://github.com/CodisLabs/codis/releases/download/3.2.0/codis3.2.0-go1.8.1-linux.tar.gz tar xzf codis3.2.0-go1.8.1-linux.tar.gz mv codis3.2.0-go1.8.1-linux /usr/local/ && cd /usr/local/ ln -s codis3.2.0-go1.8.1-linux codis-server mkdir /usr/local/codis-server/logs #根據不同角色定義目錄 #ln -s codis3.2.0-go1.8.1-linux codis-dashboard #mkdir /usr/local/codis-dashboard/logs #ln -s codis3.2.0-go1.8.1-linux codis-proxy #mkdir /usr/local/codis-proxy/logs ``` 將源碼包中的config目錄拷貝到/usr/local/codis/目錄下 ```shell cd /opt/ wget https://codeload.github.com/CodisLabs/codis/tar.gz/3.2.0 tar xzf 3.2.0 cp -a /opt/codis-3.2.0/config /usr/local/codis-server/ #cp -a /opt/codis-3.2.0/config /usr/local/codis-dashboard/ #cp -a /opt/codis-3.2.0/config /usr/local/codis-proxy/ ``` 修改目錄權限 ```shell chown root.root -R /usr/local/codis ``` #### 配置Codis-Server(Redis) |主機名|監聽端口|session_auth|數據目錄|最大內存|IP地址| | :------------: | :------------: | :------------: | :------------: | :------------: |:------------: | |rds01| 6900 |codis6m4zGKYz| /data/codis_6900/ |1G | 192.168.0.106| |rds01 | 6901 |codis6m4zGKYz| /data/codis_6901/ |1G |192.168.0.106| |rds02| 6902 |codis6m4zGKYz| /data/codis_6902/ |1G | 192.168.0.227| |rds02 | 6903 |codis6m4zGKYz| /data/codis_6903/ |1G |192.168.0.227| ##### 初始化目錄和配置文件 192.168.0.116 ```shell mkdir /data/codis_690{0..1} cd /usr/local/codis-server/config/ cp redis.conf 6900_codis.conf cp redis.conf 6901_codis.conf ``` 192.168.0.227 ```shell mkdir /data/codis_690{2..3} cd /usr/local/codis-server/config/ cp redis.conf 6902_codis.conf cp redis.conf 6903_codis.conf ``` ##### 配置文件(主要參數) ```shell #grep ^[a-Z] redis_6900.conf bind 192.168.0.227 port 6902 daemonize yes pidfile /data/codis_6902/redis_6902.pid loglevel notice logfile "/data/codis_6902/redis_6902.log" databases 16 dbfilename dump_6902.rdb dir /data/codis_6902/ requirepass codis6m4zGKYz maxmemory 1G appendonly yes appendfilename "appendonly.aof" ``` ##### 啟動并測試 ```shell /usr/local/codis-server/codis-server /usr/local/codis-server/config/6900_codis.conf /usr/local/codis-server/redis-cli -h 192.168.0.106 -p 6900 -a codis6m4zGKYz ``` #### 配置codis-proxy ##### 基礎環境 |主機名|代理端口|管理端口|product_auth|session_auth|IP地址| | :------------: | :------------: | :------------: | :------------: |:------------: |:------------: | |dal01| 19000 |11080|dashfpyYmglC | codis6m4zGKYz|192.168.0.111| |dal02 | 19000 |11080|dashfpyYmglC |codis6m4zGKYz|192.168.0.239| ##### 寫在之前 - product_auth是Codis各個角色間通訊的密碼,Codis-server中的requirepass就是設置的這個密碼 - session_auth是把Codis-Server中的requirepass的功能,提升到了Codis-proxy來實現 最終就是客戶端連接Codis集群時,所帶的密碼是session_auth密碼,而所有Codis角色間通訊,都使用product_auth密碼 ##### 配置 ```shell # Set Codis Product Name/Auth. product_name = "codis-cluster" product_auth = "dashfpyYmglC" # Set auth for client session # 1. product_auth is used for auth validation among codis-dashboard, # codis-proxy and codis-server. # 2. session_auth is different from product_auth, it requires clients # to issue AUTH <PASSWORD> before processing any other commands. session_auth = "codis6m4zGKYz" admin_addr = "192.168.0.110:11080" proto_type = "tcp4" proxy_addr = "192.168.0.110:19000" jodis_name = "zookeeper" jodis_addr = "192.168.0.112:2181,192.168.0.112:2182,192.168.0.112:2183" jodis_timeout = "20s" jodis_compatible = false ``` #### 疑問?proxy_addr配置所有proxy還是自己? ##### 啟動服務 ```shell nohup /usr/local/codis-proxy/codis-proxy --ncpu=1 -c /usr/local/codis-proxy/config/proxy.toml -l /usr/local/codis-proxy/logs/proxy.log --log-level=WARN >> /usr/local/codis-proxy/logs/nohup_proxy.log & ``` #### 配置codis-dashboard ##### 基礎環境 |主機名|管理端口|product_auth|IP地址| | :------------: | :------------: | :------------: | :------------: |:------------: | |dashboard| 18080 | dashfpyYmglC|192.168.0.111| |fe| 8888 | -|192.168.0.111| ##### 配置修改 修改存儲為zookeeper并修改product_name名稱 ```shell # Set Coordinator, only accept "zookeeper" & "etcd" & "filesystem". # Quick Start #coordinator_name = "filesystem" #coordinator_addr = "/tmp/codis" coordinator_name = "zookeeper" coordinator_addr = "192.168.0.112:2181,192.168.0.112:2182,192.168.0.112:2183" # Set Codis Product Name/Auth. product_name = "codis-cluster" product_auth = "dashfpyYmglC" # Set bind address for admin(rpc), tcp only. admin_addr = "192.168.0.111:18080" ``` 啟動Dashboard ```shell nohup /usr/local/codis/codis-dashboard --ncpu=1 -c /usr/local/codis/config/dashboard.toml -l /usr/local/codis/logs/dashboard.log --log-level=WARN >> /usr/local/codis/logs/nohup_dashboard.log & ``` 查看端口和zookeeper是否有數據 ```shell [zk: 192.168.0.112:2181,192.168.0.112:2181,192.168.0.112,2183(CONNECTED) 2] get /codis3/codis-cluster/topom { "token": "a3eefb8d4762addf12265a5c6f847ea8", "start_time": "2017-08-23 13:01:44.961022186 +0800 CST", "admin_addr": "192.168.0.111:18080", "product_name": "codis-cluster", "pid": 13773, "pwd": "/usr/local/codis-dashboard/config", "sys": "Linux dashboard.prod.ding 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux" } c ``` #### 啟動codis-fe ```shell nohup /usr/local/codis-dashboard/codis-fe --ncpu=1 -l /usr/local/codis-dashboard/logs/fe.log --log-level=WARN --zookeeper=192.168.0.112:2181,192.168.0.112:2182,192.168.0.112:2183 --listen=192.168.0.111:8888 >> /usr/local/codis-dashboard/logs/nohup_fe.log & ``` #### 配置哨兵,通過codis-fe添加到集群中 ##### 注意,配置文件只添加如下內容,剩下的系統自動添加 ```shell #cat 26379_sentinel.conf bind 192.168.0.110 port 26379 daemonize yes protected-mode yes dir "/tmp" loglevel notice logfile "/data/setinel-26379.log" ``` ##### 啟動哨兵 /usr/local/codis-proxy/codis-server /usr/local/codis-server/config/26379_sentinel.conf --sentinel ##### 在codis-fe中增加哨兵 #### 最終圖形界面 ![](https://box.kancloud.cn/dabd2559652ff9d0c1c3c5a1c06f9ae2_1594x2294.png) #### 疑問 圖形界面按鈕含義 內部運行機制 #### 后續工作 完成故障測試切換 了解分片技術
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看