LNMP 分散式叢集(四):Memcached 快取伺服器的搭建

dfface發表於2020-03-18

前言

LNMP 分散式叢集的部署實踐 系列文章:

回顧一下基本的架構:

架構(序號代表IP地址:192.168.177.1X)

這一篇我們部署9號機,Memcached快取伺服器。

Memcached 是一個高效能的分散式記憶體物件快取系統,是一種基於記憶體的key-value儲存。可以利用記憶體來快取一些被頻繁訪問的資料,一般的使用目的是,通過快取資料庫查詢結果,減少資料庫訪問次數,以提高動態Web應用的速度、提高可擴充套件性

但近年來已被redis趕超,redis被稱為“強化版memcached”在功能多樣性方面要勝過memcached,雖然強大且更具靈活性,但複雜程度也比memcached更甚。不過有兩類特殊場景仍然是memcached的一家天下。首先就是對小型靜態資料進行快取處理,最具代表性的例子就是HTML程式碼片段。除此之外,memcached在橫向擴充套件方面也比redis更具優勢。除非大家需要考慮某種限定性條件(例如處理傳統應用程式)對於memcached的特殊依賴性,或者自己的實際用例屬於前面提到的兩類場景中的一種,否則請直接選擇redis並加以運用。——《memcached redis 對比分析》

部署

編譯安裝 Memcached (9號機)

yum -y install gcc libevent-devel
wget http://www.memcached.org/files/memcached-1.4.39.tar.gz
tar -zxvf memcached-1.4.39.tar.gz
cd memcached-1.4.39
./configure && make && make install
cd scripts
cp memcached-init /etc/init.d/memcached
chkconfig --add memcached
# Memcached服務指令碼呼叫了start-memcached 指令碼,也需要複製到指定路徑
mkdir -p /usr/share/memcached/scripts
cp start-memcached /usr/share/memcached/scripts/
cd ~
# 為start-memcached 指令碼中指定的路徑建立連線
ln -s /usr/local/bin/memcached /usr/bin/memcached
# Memcached 中的指令碼依賴於Perl和start-stop-daemon,start-stop-daemon是Debain中提供的命令,還需要在CentOS中單獨安裝
yum -y install gcc-c++ wget patch perl-core xz ncurses-devel # 注意不是perl是perl-core,也可以採取下面的在裝了perl之後補充安裝:
#yum -y install perl-version perl-Data-Dumper # centOS minimal 安裝需要幾個軟體包才能執行。“最小”確實很小,而且完全沒有Perl。個人建議安裝 perl-core
# 以上的安裝解答請看https://community.opmantek.com/display/OA/questions/17760323/how-to-resolve-openaudit-install-error-cant-locate-version.pm-in-inc-on-centos-7

wget https://mirrors.tuna.tsinghua.edu.cn/debian/pool/main/d/dpkg/dpkg_1.18.25.tar.xz
tar -xvf  dpkg_1.18.25.tar.xz
cd dpkg-1.18.9
./configure --without-libselinux && make  # without-libselinux用於解決系統中安裝libselinux-devel 導致dpkg編譯失敗的問題
# 將編譯後的成怒複製到/usr/local/sbin/使用
cp utils/start-stop-daemon /usr/local/sbin/
# 啟動 Memcached 服務
vi /etc/memcached.conf
-m 512  # 分配記憶體大小
-p 11211  # 監聽的TCP埠
-u nobody  # 配置工作使用者
-c 1024  # 配置最高併發連線數
-t 16  # 配置使用的執行緒數

/usr/local/bin/memcached -h
service memcached start
iptables -I INPUT -p tcp --dport 11211 -j ACCEPT
service iptables save
複製程式碼

安裝 Memcached 擴充套件(3、4、5號機)

# PHP的Memcached擴充套件下載(於PECL:PHP社群擴充套件庫)
wget http://pecl.php.net/get/memcached-2.2.0.tgz
# 該擴充套件依賴於 libmemcached
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

yum -y install cyrus-sasl-devel m4 autoconf  # 防止執行phpize時出現:Cannot find autoconf

tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure && make && make install && cd ..
tar -zxvf memcached-2.2.0.tgz
cd memcached-2.2.0
/usr/local/php/bin/phpize
./configure \
--with-php-config=/usr/local/php/bin/php-config
make && make install && cd ..

vi /usr/local/php/lib/php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/memcached.so

service php-fpm reload
複製程式碼

測試Memcached

vi /data/www/test.php
<?php
# 連線Memcached伺服器
$mem = new Memcached();
$mem->addServer('192.168.177.19', 11211);
# 儲存資料(Key/Value形式,Key=UserName,Value=James)
$mem->set('UserName', 'James');
# 獲取資料(根據Key=UserName,獲得Value)輸出結果:James
echo $mem->get('UserName');
複製程式碼

http://192.168.177.13/test.php

現在我們的虛擬機器都齊全了:

9個虛擬機器

LNMP 分散式叢集的部署實踐 系列文章:


dfface 的版權宣告:所有文章除特別宣告外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明出處,嚴禁商業用途!

相關文章