锘??xml version="1.0" encoding="utf-8" standalone="yes"?>91嫩草私人成人亚洲影院,亚洲精华国产精华精华液,亚洲va成无码人在线观看http://www.tkk7.com/jlin/category/54694.htmlzh-cnWed, 21 Oct 2015 19:43:49 GMTWed, 21 Oct 2015 19:43:49 GMT60涓鑷存ash綆楁硶鍦≧edis鍒嗗竷寮忎腑鐨勪嬌鐢?杞?http://www.tkk7.com/jlin/archive/2015/10/20/427834.htmlflyflyTue, 20 Oct 2015 07:51:00 GMThttp://www.tkk7.com/jlin/archive/2015/10/20/427834.htmlhttp://www.tkk7.com/jlin/comments/427834.htmlhttp://www.tkk7.com/jlin/archive/2015/10/20/427834.html#Feedback0http://www.tkk7.com/jlin/comments/commentRss/427834.htmlhttp://www.tkk7.com/jlin/services/trackbacks/427834.html鐢變簬redis鏄崟鐐癸紝浣嗘槸欏圭洰涓笉鍙伩鍏嶇殑浼氫嬌鐢ㄥ鍙癛edis緙撳瓨鏈嶅姟鍣紝閭d箞鎬庝箞鎶婄紦瀛樼殑Key鍧囧寑鐨勬槧灝勫埌澶氬彴Redis鏈嶅姟鍣ㄤ笂錛屼笖闅忕潃緙撳瓨鏈嶅姟鍣ㄧ殑澧炲姞鎴栧噺灝戞椂鍋氬埌鏈灝忓寲鐨勫噺灝戠紦瀛楰ey鐨勫懡涓巼鍛紵榪欐牱灝遍渶瑕佹垜浠嚜宸卞疄鐜板垎甯冨紡銆?/span>

銆銆Memcached瀵瑰ぇ瀹跺簲璇ヤ笉闄岀敓錛岄氳繃鎶奒ey鏄犲皠鍒癕emcached Server涓婏紝瀹炵幇蹇熻鍙栥傛垜浠彲浠ュ姩鎬佸鍏惰妭鐐瑰鍔狅紝騫舵湭褰卞搷涔嬪墠宸茬粡鏄犲皠鍒板唴瀛樼殑Key涓巑emcached Server涔嬮棿鐨勫叧緋伙紝榪欏氨鏄洜涓轟嬌鐢ㄤ簡涓鑷存у搱甯屻?br />鍥犱負Memcached鐨勫搱甯岀瓥鐣ユ槸鍦ㄥ叾瀹㈡埛绔疄鐜扮殑錛屽洜姝や笉鍚岀殑瀹㈡埛绔疄鐜頒篃鏈夊尯鍒紝浠pymemcache銆乆memcache涓轟緥錛岄兘鏄嬌鐢ㄤ簡KETAMA浣滀負鍏跺疄鐜般?/p>

銆銆鍥犳錛屾垜浠篃鍙互浣跨敤涓鑷存ash綆楁硶鏉ヨВ鍐砇edis鍒嗗竷寮忚繖涓棶棰樸傚湪浠嬬粛涓鑷存ash綆楁硶涔嬪墠錛屽厛浠嬬粛涓涓嬫垜涔嬪墠鎯崇殑涓涓柟娉曪紝鎬庝箞鎶奒ey鍧囧寑鐨勬槧灝勫埌澶氬彴Redis Server涓娿?/p>

銆銆鐢變簬LZ姘村鉤鏈夐檺涓斿Redis鐮旂┒鐨勪笉娣憋紝鏂囦腑鏈夊啓鐨勪笉瀵圭殑鍦版柟璇鋒寚姝c?/strong>

鏂規涓

璇ユ柟妗堟槸鍓嶅嚑澶╂兂鐨勪竴涓柟娉曪紝涓昏鎬濊礬鏄氳繃瀵圭紦瀛楰ey涓殑瀛楁瘝鍜屾暟瀛楃殑ascii鐮佸兼眰sum錛岃sum鍊煎Redis Server鎬繪暟鍙栦綑寰楀埌鐨勬暟瀛楀嵆涓鴻Key鏄犲皠鍒扮殑Redis Server錛岃鏂規硶鏈変竴涓緢澶х殑緙洪櫡灝辨槸褰揜edis Server澧炲姞鎴栧噺灝戞椂錛屽熀鏈笂鎵鏈夌殑Key閮芥槧灝勪笉鍒板搴旂殑鐨凴edis Server浜嗐備唬鐮佸涓嬶細

澶嶅埗浠g爜
    /// <summary>         /// 鏍規嵁緙撳瓨鐨凨ey鏄犲皠瀵瑰簲鐨凷erver         /// </summary>         /// <param name="Key"></param>         /// <returns></returns>         public static RedisClient GetRedisClientByKey(string Key)         {             List<RedisClientInfo> RedisClientList = new List<RedisClientInfo>();             RedisClientList.Add(new RedisClientInfo() { Num = 0, IPPort = "127.0.0.1:6379" });             RedisClientList.Add(new RedisClientInfo() { Num = 1, IPPort = "127.0.0.1:9001" });              char[] charKey = Key.ToCharArray();             //璁板綍Key涓殑鎵鏈夊瓧姣嶄笌鏁板瓧鐨刟scii鐮佸拰             int KeyNum = 0;             //璁板綍浣欐暟             int Num = 0;             foreach (var c in charKey)             {                 if ((c >= 'a' && 'z' >= c) || (c >= 'A' && 'Z' >= c))                 {                     System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();                     KeyNum = KeyNum + (int)asciiEncoding.GetBytes(c.ToString())[0];                 }                 if (c >= '1' && '9' >= c)                 {                     KeyNum += Convert.ToInt32(c.ToString());                 }             }             Num = KeyNum % RedisClientList.Count;             return new RedisClient(RedisClientList.Where(it => it.Num == Num).First().IPPort);         }         //Redis瀹㈡埛绔俊鎭?/span>         public class RedisClientInfo         {             //Redis Server緙栧彿             public int Num { get; set; }             //Redis Server IP鍦板潃鍜岀鍙e彿             public string IPPort { get; set; }         }
澶嶅埗浠g爜

鏂規浜?/h2>

1銆佸垎甯冨紡瀹炵幇

閫氳繃key鍋氫竴鑷存у搱甯岋紝瀹炵幇key瀵瑰簲redis緇撶偣鐨勫垎甯冦?/p>

涓鑷存у搱甯岀殑瀹炵幇錛?/p>

  1. hash鍊艱綆楋細閫氳繃鏀寔MD5涓嶮urmurHash涓ょ璁$畻鏂瑰紡錛岄粯璁ゆ槸閲囩敤MurmurHash錛岄珮鏁堢殑hash璁$畻銆?/li>
  2. 涓鑷存х殑瀹炵幇錛氶氳繃java鐨凾reeMap鏉ユā鎷熺幆鐘剁粨鏋勶紝瀹炵幇鍧囧寑鍒嗗竷

浠涔堜篃涓嶅璇翠簡錛岀洿鎺ヤ笂浠g爜鍚э紝LZ涔熸槸鍙煡閬撶偣鐨瘺錛屼唬鐮佷腑榪樻湁涓浜涚湅涓嶆噦鐨勫湴鏂癸紝鐣欑潃浠ュ悗鎱㈡參鐞㈢(

澶嶅埗浠g爜
public class KetamaNodeLocator     {         //鍘熸枃涓殑JAVA綾籘reeMap瀹炵幇浜咰omparator鏂規硶錛岃繖閲屾垜鍥劇渷浜嬶紝鐩存帴鐢ㄤ簡net涓嬬殑SortedList錛屽叾涓瑿omparer鎺ュ彛鏂規硶錛?/span>         private SortedList<long, string> ketamaNodes = new SortedList<long, string>();         private HashAlgorithm hashAlg;         private int numReps = 160;         //姝ゅ鍙傛暟涓嶫AVA鐗堜腑鏈夊尯鍒紝鍥犱負浣跨敤鐨勯潤鎬佹柟娉曪紝鎵浠ヤ笉鍐嶄紶閫扝ashAlgorithm alg鍙傛暟         public KetamaNodeLocator(List<string> nodes/*錛宨nt nodeCopies*/)         {             ketamaNodes = new SortedList<long, string>();             //numReps = nodeCopies;             //瀵規墍鏈夎妭鐐癸紝鐢熸垚nCopies涓櫄鎷熺粨鐐?/span>             foreach (string node in nodes)             {                 //姣忓洓涓櫄鎷熺粨鐐逛負涓緇?/span>                 for (int i = 0; i < numReps / 4; i++)                 {                     //getKeyForNode鏂規硶涓鴻繖緇勮櫄鎷熺粨鐐瑰緱鍒版儫涓鍚嶇О                      byte[] digest = HashAlgorithm.computeMd5(node + i);                     /** Md5鏄竴涓?6瀛楄妭闀垮害鐨勬暟緇勶紝灝?6瀛楄妭鐨勬暟緇勬瘡鍥涗釜瀛楄妭涓緇勶紝鍒嗗埆瀵瑰簲涓涓櫄鎷熺粨鐐癸紝榪欏氨鏄負浠涔堜笂闈㈡妸铏氭嫙緇撶偣鍥涗釜鍒掑垎涓緇勭殑鍘熷洜*/                     for (int h = 0; h < 4; h++)                     {                         long m = HashAlgorithm.hash(digest, h);                         ketamaNodes[m] = node;                     }                 }             }         }         public string GetPrimary(string k)         {             byte[] digest = HashAlgorithm.computeMd5(k);             string rv = GetNodeForKey(HashAlgorithm.hash(digest, 0));             return rv;         }         string GetNodeForKey(long hash)         {             string rv;             long key = hash;             //濡傛灉鎵懼埌榪欎釜鑺傜偣錛岀洿鎺ュ彇鑺傜偣錛岃繑鍥?               if (!ketamaNodes.ContainsKey(key))             {                 //寰楀埌澶т簬褰撳墠key鐨勯偅涓瓙Map錛岀劧鍚庝粠涓彇鍑虹涓涓猭ey錛屽氨鏄ぇ浜庝笖紱誨畠鏈榪戠殑閭d釜key 璇存槑璇﹁: http://www.javaeye.com/topic/684087                 var tailMap = from coll in ketamaNodes                               where coll.Key > hash                               select new { coll.Key };                 if (tailMap == null || tailMap.Count() == 0)                     key = ketamaNodes.FirstOrDefault().Key;                 else                     key = tailMap.FirstOrDefault().Key;             }             rv = ketamaNodes[key];             return rv;         }     }     public class HashAlgorithm     {         public static long hash(byte[] digest, int nTime)         {             long rv = ((long)(digest[3 + nTime * 4] & 0xFF) << 24)                     | ((long)(digest[2 + nTime * 4] & 0xFF) << 16)                     | ((long)(digest[1 + nTime * 4] & 0xFF) << 8)                     | ((long)digest[0 + nTime * 4] & 0xFF);             return rv & 0xffffffffL; /* Truncate to 32-bits */         }         /**          * Get the md5 of the given key.          */         public static byte[] computeMd5(string k)         {             MD5 md5 = new MD5CryptoServiceProvider();              byte[] keyBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(k));             md5.Clear();             //md5.update(keyBytes);             //return md5.digest();             return keyBytes;         }     }
澶嶅埗浠g爜

2銆佸垎甯冨紡嫻嬭瘯

1銆佸亣璁炬湁涓や釜server錛?001鍜?002錛屽驚鐜皟鐢?0嬈$湅鐪婯ey鍊艱兘涓嶈兘鍧囧寑鐨勬槧灝勫埌server涓婏紝浠g爜濡備笅錛?/p>

澶嶅埗浠g爜
    static void Main(string[] args)         {             //鍋囪鐨剆erver             List<string> nodes = new List<string>() { "0001","0002" };             KetamaNodeLocator k = new KetamaNodeLocator(nodes);             string str = "";             for (int i = 0; i < 10; i++)             {                 string Key="user_" + i;                 str += string.Format("Key:{0}鍒嗛厤鍒扮殑Server涓猴細{1}\n\n", Key, k.GetPrimary(Key));             }                          Console.WriteLine(str);                         Console.ReadLine();                       }
澶嶅埗浠g爜

紼嬪簭榪愯涓ゆ鐨勭粨鏋滃涓嬶紝鍙戠幇Key鍩烘湰涓婂潎鍖鐨勫垎閰嶅埌Server鑺傜偣涓婁簡銆?/p>

2銆佹垜浠湪娣誨姞涓涓?003鐨剆erver鑺傜偣錛屼唬鐮佸涓嬶細

澶嶅埗浠g爜
  static void Main(string[] args)         {             //鍋囪鐨剆erver             List<string> nodes = new List<string>() { "0001","0002" ,"0003"};             KetamaNodeLocator k = new KetamaNodeLocator(nodes);             string str = "";             for (int i = 0; i < 10; i++)             {                 string Key="user_" + i;                 str += string.Format("Key:{0}鍒嗛厤鍒扮殑Server涓猴細{1}\n\n", Key, k.GetPrimary(Key));             }                          Console.WriteLine(str);                         Console.ReadLine();                       }
澶嶅埗浠g爜

紼嬪簭榪愯涓ゆ鐨勭粨鏋滃涓嬶細

瀵規瘮絎竴嬈$殑榪愯緇撴灉鍙戠幇鍙湁user_5,user_7,user_9鐨勭紦瀛樹涪澶憋紝鍏朵粬鐨勭紦瀛樿繕鍙互鍛戒腑銆?/p>

3銆佹垜浠幓鎺塻erver 0002錛岃繍琛屼袱嬈$殑緇撴灉濡備笅:

瀵規瘮絎簩嬈″拰鏈榪愯緇撴灉鍙戠幇 user_0,user_1,user_6 緙撳瓨涓㈠け銆?/p>

緇撹

閫氳繃涓鑷存ash綆楁硶鍙互寰堝ソ鐨勮В鍐砇edis鍒嗗竷寮忕殑闂錛屼笖褰揜edis server澧炲姞鎴栧噺灝戠殑鏃跺欙紝涔嬪墠瀛樺偍鐨勭紦瀛樺懡涓巼榪樻槸姣旇緝楂樼殑銆?br />

http://www.cnblogs.com/lc-chenlong/p/4194150.html
http://www.cnblogs.com/lc-chenlong/p/4195033.html
http://www.cnblogs.com/lc-chenlong/p/3218157.html

鏈枃鍙傝?/h2>

1銆?a target="_blank" style="color: #1d58d1; text-decoration: none;">http://blog.csdn.net/chen77716/article/details/5949166

2銆?a target="_blank" style="color: #1d58d1; text-decoration: none;">http://www.cr173.com/html/6474_2.html


杞?http://www.cnblogs.com/lc-chenlong/p/4195814.html?utm_source=tuicool&utm_medium=referral





fly 2015-10-20 15:51 鍙戣〃璇勮
]]>搴旂敤浜庤礋杞藉潎琛$殑涓鑷存у搱甯屽強java瀹炵幇(杞?http://www.tkk7.com/jlin/archive/2015/10/19/427820.htmlflyflyMon, 19 Oct 2015 07:23:00 GMThttp://www.tkk7.com/jlin/archive/2015/10/19/427820.htmlhttp://www.tkk7.com/jlin/comments/427820.htmlhttp://www.tkk7.com/jlin/archive/2015/10/19/427820.html#Feedback0http://www.tkk7.com/jlin/comments/commentRss/427820.htmlhttp://www.tkk7.com/jlin/services/trackbacks/427820.html闃呰鍏ㄦ枃

fly 2015-10-19 15:23 鍙戣〃璇勮
]]>
楂樻ц兘緗戠珯鏋舵瀯璁捐涔嬬紦瀛樼瘒錛?錛? Redis 闆嗙兢(杞?http://www.tkk7.com/jlin/archive/2015/10/14/427731.htmlflyflyWed, 14 Oct 2015 02:26:00 GMThttp://www.tkk7.com/jlin/archive/2015/10/14/427731.htmlhttp://www.tkk7.com/jlin/comments/427731.htmlhttp://www.tkk7.com/jlin/archive/2015/10/14/427731.html#Feedback0http://www.tkk7.com/jlin/comments/commentRss/427731.htmlhttp://www.tkk7.com/jlin/services/trackbacks/427731.html闆嗙兢鎶鏈槸鏋勫緩楂樻ц兘緗戠珯鏋舵瀯鐨勯噸瑕佹墜孌碉紝璇曟兂鍦ㄧ綉绔欐壙鍙楅珮騫跺彂璁塊棶鍘嬪姏鐨勫悓鏃訛紝榪橀渶瑕佷粠嫻烽噺鏁版嵁涓煡璇㈠嚭婊¤凍鏉′歡鐨勬暟鎹紝騫跺揩閫熷搷搴旓紝鎴戜滑蹇呯劧鎯沖埌鐨勬槸灝嗘暟鎹繘琛屽垏鐗囷紝鎶婃暟鎹牴鎹煇縐嶈鍒欐斁鍏ュ涓笉鍚岀殑鏈嶅姟鍣ㄨ妭鐐癸紝鏉ラ檷浣庡崟鑺傜偣鏈嶅姟鍣ㄧ殑鍘嬪姏銆?/p>

涓婁竴綃囨垜浠鍒頒簡 Redis 鐨勪富浠庡鍒舵妧鏈紝褰撳疄鐜頒簡澶氳妭鐐圭殑 master-slave 鍚庯紝鎴戜滑涔熷彲浠ユ妸瀹冨彨鍋氶泦緹わ紝浣嗘垜浠粖澶╄璁茬殑闆嗙兢涓昏鏄埄鐢ㄥ垏鐗囨妧鏈潵緇勫緩鐨勯泦緹ゃ?/p>

闆嗙兢瑕佸疄鐜扮殑鐩殑鏄灝嗕笉鍚岀殑 key 鍒嗘暎鏀劇疆鍒頒笉鍚岀殑 redis 鑺傜偣錛岃繖閲屾垜浠渶瑕佷竴涓鍒欐垨鑰呯畻娉曪紝閫氬父鐨勫仛娉曟槸鑾峰彇 key 鐨勫搱甯屽鹼紝鐒跺悗鏍規嵁鑺傜偣鏁版潵姹傛ā錛屼絾榪欑鍋氭硶鏈夊叾鏄庢樉鐨勫紛绔紝褰撴垜浠渶瑕佸鍔犳垨鍑忓皯涓涓妭鐐規椂錛屼細閫犳垚澶ч噺鐨?key 鏃犳硶鍛戒腑錛岃繖縐嶆瘮渚嬫槸鐩稿綋楂樼殑錛屾墍浠ュ氨鏈変漢鎻愬嚭浜嗕竴鑷存у搱甯岀殑姒傚康銆?/p>

涓鑷存у搱甯屾湁鍥涗釜閲嶈鐗瑰緛錛?/p>

鍧囪 鎬э細涔熸湁浜烘妸瀹冨畾涔変負騫寵 鎬э紝鏄寚鍝堝笇鐨勭粨鏋滆兘澶熷敖鍙兘鍒嗗竷鍒版墍鏈夌殑鑺傜偣涓幓錛岃繖鏍峰彲浠ユ湁鏁堢殑鍒╃敤姣忎釜鑺傜偣涓婄殑璧勬簮銆?/p>

鍗曡皟鎬э細瀵逛簬鍗曡皟鎬ф湁寰堝緲昏瘧璁╂垜闈炲父鐨勪笉瑙o紝鑰屾垜鎯寵鐨勬槸褰撹妭鐐規暟閲忓彉鍖栨椂鍝堝笇鐨勭粨鏋滃簲灝藉彲鑳界殑淇濇姢宸插垎閰嶇殑鍐呭涓嶄細琚噸鏂板垎媧懼埌鏂扮殑鑺傜偣銆?/span>

鍒嗘暎鎬у拰璐熻澆錛氳繖涓や釜鍏跺疄鏄樊涓嶅鐨勬剰鎬濓紝灝辨槸瑕佹眰涓鑷存у搱甯岀畻娉曞 key 鍝堝笇搴斿敖鍙兘鐨勯伩鍏嶉噸澶嶃?/div>

浣嗕竴鑷存у搱甯屼笉鏄垜浠粖澶╄浠嬬粛鐨勯噸鐐癸紝鍥犱負 Redis 寮曞叆鍙︿竴縐嶅搱甯屾Ы錛坔ash slot錛夌殑姒傚康銆?/p>

Redis 闆嗙兢涓唴緗簡 16384 涓搱甯屾Ы錛屽綋闇瑕佸湪 Redis 闆嗙兢涓斁緗竴涓?key-value 鏃訛紝redis 鍏堝 key 浣跨敤 crc16 綆楁硶綆楀嚭涓涓粨鏋滐紝鐒跺悗鎶婄粨鏋滃 16384 姹備綑鏁幫紝榪欐牱姣忎釜 key 閮戒細瀵瑰簲涓涓紪鍙峰湪 0-16383 涔嬮棿鐨勫搱甯屾Ы錛宺edis 浼氭牴鎹妭鐐規暟閲忓ぇ鑷村潎絳夌殑灝嗗搱甯屾Ы鏄犲皠鍒頒笉鍚岀殑鑺傜偣銆?/p>

浣跨敤鍝堝笇妲界殑濂藉灝卞湪浜庡彲浠ユ柟渚跨殑娣誨姞鎴栫Щ闄よ妭鐐廣?/p>

褰撻渶瑕佸鍔犺妭鐐規椂錛屽彧闇瑕佹妸鍏朵粬鑺傜偣鐨勬煇浜涘搱甯屾Ы鎸埌鏂拌妭鐐瑰氨鍙互浜嗭紱

褰撻渶瑕佺Щ闄よ妭鐐規椂錛屽彧闇瑕佹妸縐婚櫎鑺傜偣涓婄殑鍝堝笇妲芥尓鍒板叾浠栬妭鐐瑰氨琛屼簡錛?/p>

鍐呴儴鏈哄埗錛屼笌鎴戜綍騫詫紝瀵逛簬鎴戜滑鏉ヨ錛屽湪鏂板鎴栫Щ闄よ妭鐐圭殑鏃跺欎笉瑕佽鎴戜滑鍏堝仠鎺夋墍鏈夌殑 redis 鏈嶅姟鎴戝氨璋㈠ぉ璋㈠湴浜嗭紝榪欑偣瀹冨仛鍒頒簡銆?/p>

涓嬮潰鎴戜滑灝卞紑濮嬪姩鎵嬫惌寤轟竴涓?redis 闆嗙兢鏉ヤ綋楠屼竴涓嬨?/p>

鍥犱負鎴戜滑瑕佸惎鍔ㄥ涓?redis 瀹炰緥錛岃櫧鐒舵垜浠彲浠ョ洿鎺ラ氳繃鍛戒護琛屾潵鍚姩錛屼絾濮嬬粓鏄笉鎬庝箞鏂逛究鐨勶紝鎵浠ユ垜浠厛鏉ユ柊寤轟笁涓疄渚嬬洰褰曪紝鍒嗗埆鏄?001錛?002錛?003錛岀洰褰曞悕灝辨槸 redis 瀹炰緥鐨勭鍙e彿銆?/p>

鎴戣繖閲屽凡緇忓緩濂戒簡鐩綍錛岀劧鍚庢垜浠妸浠ュ墠緙栬瘧榪囧拰淇敼榪囩殑 redis-server銆乺edis.conf榪欎袱涓枃浠跺垎鍒嫹璐濆埌榪欎笁涓洰褰曢噷闈紝鎷瘋礉瀹屼箣鍚庡氨鍍忚繖鏍峰瓙浜嗭細

鎴戜滑鎵撳紑 redis.conf 鏂囦歡錛屼負浜嗙畝鍗曡搗瑙侊紝鎴戜滑鍙繚鐣欎笅闈㈠嚑涓厤緗」錛?/p>

daemonize yes
port 9001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

娉ㄦ剰錛歱ort 瑕佷慨鏀規垚瀵瑰簲鐩綍鐨勫悕瀛楋紝涔熷氨鏄瘡涓疄渚嬭鏈変笉鍚岀殑绔彛銆?/p>

涓嬮潰鎴戜滑鍒嗗埆鍚姩榪欎笁涓疄渚嬶細

zhaoguihuadediannao:~ zhaogh$ cd applications/dev/redis-cluster

zhaoguihuadediannao:redis-cluster zhaogh$ cd 9001

zhaoguihuadediannao:9001 zhaogh$ ./redis-server ./redis.conf

zhaoguihuadediannao:9003 zhaogh$ cd ../9002

zhaoguihuadediannao:9002 zhaogh$ ./redis-server ./redis.conf

zhaoguihuadediannao:9002 zhaogh$ cd ../9003

zhaoguihuadediannao:9003 zhaogh$ ./redis-server ./redis.conf

zhaoguihuadediannao:9003 zhaogh$ 

鎺ヤ笅鏉ユ垜浠潵鍒涘緩闆嗙兢錛岃涓変釜瀹炰緥浜掔浉閫氳錛?/p>

zhaoguihuadediannao:src zhaogh$ ./redis-trib.rb create --replicas 0 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003

>>> Creating cluster

Connecting to node 127.0.0.1:9001: OK

Connecting to node 127.0.0.1:9002: OK

Connecting to node 127.0.0.1:9003: OK

>>> Performing hash slots allocation on 3 nodes...

Using 3 masters:

127.0.0.1:9001

127.0.0.1:9002

127.0.0.1:9003

M: 92c9912cb1ccf657c886ecd839dd32c66efd8762 127.0.0.1:9001

   slots:0-5460 (5461 slots) master

M: b6d46fcb8b0e6ee373b09a4f2cbcec744d1a259b 127.0.0.1:9002

   slots:5461-10922 (5462 slots) master

M: 44ab30c7c589ffb15b9b04dd827c72cfaeedacb2 127.0.0.1:9003

   slots:10923-16383 (5461 slots) master

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 127.0.0.1:9001)

M: 92c9912cb1ccf657c886ecd839dd32c66efd8762 127.0.0.1:9001

   slots:0-5460 (5461 slots) master

M: b6d46fcb8b0e6ee373b09a4f2cbcec744d1a259b 127.0.0.1:9002

   slots:5461-10922 (5462 slots) master

M: 44ab30c7c589ffb15b9b04dd827c72cfaeedacb2 127.0.0.1:9003

   slots:10923-16383 (5461 slots) master

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

zhaoguihuadediannao:src zhaogh$ 

闇瑕佹敞鎰忕殑鏄墽琛?nbsp;redis-trib.rb 鍛戒護闇瑕?ruby 鐨勬敮鎸侊紝濡傛灉浣犳病鏈夊畨瑁呭彲浠ュ厛鍒?nbsp;https://rubygems.org/gems/redis 涓嬭澆錛岀劧鍚庣綰垮畨瑁呫?/p>

sudo gem install redis-3.0.7.gem --local

涓嬮潰鎴戜滑鐢?redis 鑷甫鐨勫鎴風嫻嬭瘯涓涓嬶細

zhaoguihuadediannao:src zhaogh$ ./redis-cli -c -p 9001

127.0.0.1:9001> get testkey001

-> Redirected to slot [12786] located at 127.0.0.1:9003

(nil)

127.0.0.1:9003> set testkey002 testvalue002

-> Redirected to slot [401] located at 127.0.0.1:9001

OK

127.0.0.1:9001> get testkey002

"testvalue002"

127.0.0.1:9001> set testkey003 testvalue003

OK

127.0.0.1:9001> 

鍙互鐪嬪埌錛岃櫧鐒舵垜浠涓嬈¤繛鎺ョ殑鏄?001绔彛錛屽綋鎴戜滑鍘昏幏鍙?testkey001 鐨勬椂鍊欙紝redis cluster 鑷姩甯垜浠噸瀹氬悜鍒?9003 銆?/p>

褰撴垜浠湪 9003 璁劇疆 testkey002 鏃訛紝redis cluster 鍙堥噸瀹氬悜鍒?9001 銆?/p>

fly 2015-10-14 10:26 鍙戣〃璇勮
]]>Nginx閰嶇疆鏂囦歡璇︾粏璇存槑http://www.tkk7.com/jlin/archive/2015/02/03/422720.htmlflyflyTue, 03 Feb 2015 15:00:00 GMThttp://www.tkk7.com/jlin/archive/2015/02/03/422720.htmlhttp://www.tkk7.com/jlin/comments/422720.htmlhttp://www.tkk7.com/jlin/archive/2015/02/03/422720.html#Feedback0http://www.tkk7.com/jlin/comments/commentRss/422720.htmlhttp://www.tkk7.com/jlin/services/trackbacks/422720.html鍦ㄦ璁板綍涓婲ginx鏈嶅姟鍣╪ginx.conf鐨勯厤緗枃浠惰鏄? 閮ㄥ垎娉ㄩ噴鏀墮泦涓庣綉緇?

#榪愯鐢ㄦ埛
user www-data;   
#鍚姩榪涚▼,閫氬父璁劇疆鎴愬拰cpu鐨勬暟閲忕浉絳?br />worker_processes  1;

#鍏ㄥ眬閿欒鏃ュ織鍙奝ID鏂囦歡
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

#宸ヤ綔妯″紡鍙婅繛鎺ユ暟涓婇檺
events {
    use   epoll;             #epoll鏄璺鐢↖O(I/O Multiplexing)涓殑涓縐嶆柟寮?浣嗘槸浠呯敤浜巐inux2.6浠ヤ笂鍐呮牳,鍙互澶уぇ鎻愰珮nginx鐨勬ц兘
    worker_connections  1024;#鍗曚釜鍚庡彴worker process榪涚▼鐨勬渶澶у茍鍙戦摼鎺ユ暟
    # multi_accept on;
}

#璁懼畾http鏈嶅姟鍣紝鍒╃敤瀹冪殑鍙嶅悜浠g悊鍔熻兘鎻愪緵璐熻澆鍧囪 鏀寔
http {
     #璁懼畾mime綾誨瀷,綾誨瀷鐢眒ime.type鏂囦歡瀹氫箟
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    #璁懼畾鏃ュ織鏍煎紡
    access_log    /var/log/nginx/access.log;

    #sendfile 鎸囦護鎸囧畾 nginx 鏄惁璋冪敤 sendfile 鍑芥暟錛坺ero copy 鏂瑰紡錛夋潵杈撳嚭鏂囦歡錛屽浜庢櫘閫氬簲鐢紝
    #蹇呴』璁句負 on,濡傛灉鐢ㄦ潵榪涜涓嬭澆絳夊簲鐢ㄧ鐩業O閲嶈礋杞藉簲鐢紝鍙緗負 off錛屼互騫寵 紓佺洏涓庣綉緇淚/O澶勭悊閫熷害錛岄檷浣庣郴緇熺殑uptime.
    sendfile        on;
    #tcp_nopush     on;

    #榪炴帴瓚呮椂鏃墮棿
    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;
   
    #寮鍚痝zip鍘嬬緝
    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    #璁懼畾璇鋒眰緙撳啿
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    #璁懼畾璐熻澆鍧囪 鐨勬湇鍔″櫒鍒楄〃
     upstream mysvr {
    #weigth鍙傛暟琛ㄧず鏉冨鹼紝鏉冨艱秺楂樿鍒嗛厤鍒扮殑鍑犵巼瓚婂ぇ
    #鏈満涓婄殑Squid寮鍚?128绔彛
    server 192.168.8.1:3128 weight=5;
    server 192.168.8.2:80  weight=1;
    server 192.168.8.3:80  weight=6;
    }


   server {
    #渚﹀惉80绔彛
        listen       80;
        #瀹氫箟浣跨敤www.xx.com璁塊棶
        server_name  www.xx.com;

        #璁懼畾鏈櫄鎷熶富鏈虹殑璁塊棶鏃ュ織
        access_log  logs/www.xx.com.access.log  main;

    #榛樿璇鋒眰
    location / {
          root   /root;      #瀹氫箟鏈嶅姟鍣ㄧ殑榛樿緗戠珯鏍圭洰褰曚綅緗?br />          index index.php index.html index.htm;   #瀹氫箟棣栭〉绱㈠紩鏂囦歡鐨勫悕縐?/p>

          fastcgi_pass  www.xx.com;
         fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
          include /etc/nginx/fastcgi_params;
        }

    # 瀹氫箟閿欒鎻愮ず欏甸潰
    error_page   500 502 503 504 /50x.html; 
        location = /50x.html {
        root   /root;
    }

    #闈欐佹枃浠訛紝nginx鑷繁澶勭悊
    location ~ ^/(images|javascript|js|css|flash|media|static)/ {
        root /var/www/virtual/htdocs;
        #榪囨湡30澶╋紝闈欐佹枃浠朵笉鎬庝箞鏇存柊錛岃繃鏈熷彲浠ヨ澶т竴鐐癸紝濡傛灉棰戠箒鏇存柊錛屽垯鍙互璁劇疆寰楀皬涓鐐廣?br />        expires 30d;
    }
    #PHP 鑴氭湰璇鋒眰鍏ㄩ儴杞彂鍒?FastCGI澶勭悊. 浣跨敤FastCGI榛樿閰嶇疆.
    location ~ \.php$ {
        root /root;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;
        include fastcgi_params;
    }
    #璁懼畾鏌ョ湅Nginx鐘舵佺殑鍦板潃
    location /NginxStatus {
        stub_status            on;
        access_log              on;
        auth_basic              "NginxStatus";
        auth_basic_user_file  conf/htpasswd;
    }
    #紱佹璁塊棶 .htxxx 鏂囦歡
    location ~ /\.ht {
        deny all;
    }
    
     }
}

浠ヤ笂鏄竴浜涘熀鏈殑閰嶇疆,浣跨敤Nginx鏈澶х殑濂藉灝辨槸璐熻澆鍧囪 

濡傛灉瑕佷嬌鐢ㄨ礋杞藉潎琛$殑璇?鍙互淇敼閰嶇疆http鑺傜偣濡備笅錛?/p>

#璁懼畾http鏈嶅姟鍣紝鍒╃敤瀹冪殑鍙嶅悜浠g悊鍔熻兘鎻愪緵璐熻澆鍧囪 鏀寔
http {
     #璁懼畾mime綾誨瀷,綾誨瀷鐢眒ime.type鏂囦歡瀹氫箟
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    #璁懼畾鏃ュ織鏍煎紡
    access_log    /var/log/nginx/access.log;

    #鐪佺暐涓婃枃鏈夌殑涓浜涢厤緗妭鐐?/p>

    #銆傘傘傘傘傘傘傘傘傘?/p>

    #璁懼畾璐熻澆鍧囪 鐨勬湇鍔″櫒鍒楄〃
     upstream mysvr {
    #weigth鍙傛暟琛ㄧず鏉冨鹼紝鏉冨艱秺楂樿鍒嗛厤鍒扮殑鍑犵巼瓚婂ぇ
    server 192.168.8.1x:3128 weight=5;#鏈満涓婄殑Squid寮鍚?128绔彛
    server 192.168.8.2x:80  weight=1;
    server 192.168.8.3x:80  weight=6;
    }

   upstream mysvr2 {
    #weigth鍙傛暟琛ㄧず鏉冨鹼紝鏉冨艱秺楂樿鍒嗛厤鍒扮殑鍑犵巼瓚婂ぇ

    server 192.168.8.x:80  weight=1;
    server 192.168.8.x:80  weight=6;
    }

   #絎竴涓櫄鎷熸湇鍔″櫒
   server {
    #渚﹀惉192.168.8.x鐨?0绔彛
        listen       80;
        server_name  192.168.8.x;

      #瀵筧spx鍚庣紑鐨勮繘琛岃礋杞藉潎琛¤姹?br />    location ~ .*\.aspx$ {

         root   /root;      #瀹氫箟鏈嶅姟鍣ㄧ殑榛樿緗戠珯鏍圭洰褰曚綅緗?br />          index index.php index.html index.htm;   #瀹氫箟棣栭〉绱㈠紩鏂囦歡鐨勫悕縐?/p>

          proxy_pass  http://mysvr ;#璇鋒眰杞悜mysvr 瀹氫箟鐨勬湇鍔″櫒鍒楄〃

          #浠ヤ笅鏄竴浜涘弽鍚戜唬鐞嗙殑閰嶇疆鍙垹闄?

          proxy_redirect off;

          #鍚庣鐨刉eb鏈嶅姟鍣ㄥ彲浠ラ氳繃X-Forwarded-For鑾峰彇鐢ㄦ埛鐪熷疄IP
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 10m;    #鍏佽瀹㈡埛绔姹傜殑鏈澶у崟鏂囦歡瀛楄妭鏁?br />          client_body_buffer_size 128k;  #緙撳啿鍖轟唬鐞嗙紦鍐茬敤鎴風璇鋒眰鐨勬渶澶у瓧鑺傛暟錛?br />          proxy_connect_timeout 90;  #nginx璺熷悗绔湇鍔″櫒榪炴帴瓚呮椂鏃墮棿(浠g悊榪炴帴瓚呮椂)
          proxy_send_timeout 90;        #鍚庣鏈嶅姟鍣ㄦ暟鎹洖浼犳椂闂?浠g悊鍙戦佽秴鏃?
          proxy_read_timeout 90;         #榪炴帴鎴愬姛鍚庯紝鍚庣鏈嶅姟鍣ㄥ搷搴旀椂闂?浠g悊鎺ユ敹瓚呮椂)
          proxy_buffer_size 4k;             #璁劇疆浠g悊鏈嶅姟鍣紙nginx錛変繚瀛樼敤鎴峰ご淇℃伅鐨勭紦鍐插尯澶у皬
          proxy_buffers 4 32k;               #proxy_buffers緙撳啿鍖猴紝緗戦〉騫沖潎鍦?2k浠ヤ笅鐨勮瘽錛岃繖鏍瘋緗?br />          proxy_busy_buffers_size 64k;    #楂樿礋鑽蜂笅緙撳啿澶у皬錛坧roxy_buffers*2錛?br />          proxy_temp_file_write_size 64k;  #璁懼畾緙撳瓨鏂囦歡澶瑰ぇ灝忥紝澶т簬榪欎釜鍊鹼紝灝嗕粠upstream鏈嶅姟鍣ㄤ紶

       }

     }
}



fly 2015-02-03 23:00 鍙戣〃璇勮
]]>
Nginx+Tomcat+Memcached闆嗙兢(杞?http://www.tkk7.com/jlin/archive/2015/02/01/422636.htmlflyflySun, 01 Feb 2015 15:19:00 GMThttp://www.tkk7.com/jlin/archive/2015/02/01/422636.htmlhttp://www.tkk7.com/jlin/comments/422636.htmlhttp://www.tkk7.com/jlin/archive/2015/02/01/422636.html#Feedback0http://www.tkk7.com/jlin/comments/commentRss/422636.htmlhttp://www.tkk7.com/jlin/services/trackbacks/422636.htmlTomcat闆嗙兢session鍚屾鏂規鏈変互涓嬪嚑縐嶆柟寮忥細

  • 浣跨敤tomcat鑷甫鐨刢luster鏂瑰紡錛屽涓猼omcat闂磋嚜鍔ㄥ疄鏃跺鍒秙ession淇℃伅錛岄厤緗搗鏉ュ緢綆鍗曘備絾榪欎釜鏂規鐨勬晥鐜囨瘮杈冧綆錛屽湪澶у茍鍙戜笅琛ㄧ幇騫朵笉濂姐傚師鐞嗭細http://zyycaesar.iteye.com/blog/296606
  • 鍒╃敤nginx鐨勫熀浜庤闂甶p鐨刪ash璺敱絳栫暐錛屼繚璇佽闂殑ip濮嬬粓琚礬鐢卞埌鍚屼竴涓猼omcat涓婏紝榪欎釜閰嶇疆鏇寸畝鍗曘備絾濡傛灉搴旂敤鏄煇涓涓眬鍩熺綉澶ч噺鐢ㄦ埛鍚屾椂鐧誨綍錛岃繖鏍瘋礋杞藉潎琛″氨娌′粈涔堜綔鐢ㄤ簡銆?/li>
  • 鍒╃敤nginx鎻掍歡瀹炵幇tomcat闆嗙兢鍜宻ession鍚屾錛宯ginx-upstream-jvm-route-0.1.tar.gz錛屾槸涓涓?Nginx 鐨勬墿灞曟ā鍧楋紝鐢ㄦ潵瀹炵幇鍩轟簬 Cookie 鐨?Session Sticky 鐨勫姛鑳斤紝鍙氳繃http://code.google.com/p/nginx-upstream-jvm-route/downloads/list鑾峰彇銆?/li>
  • 鍒╃敤memcached鎶婂涓猼omcat鐨剆ession闆嗕腑綆$悊錛屽墠绔湪鍒╃敤nginx璐熻澆鍧囪 鍜屽姩闈欐佽祫婧愬垎紱伙紝鍦ㄥ吋欏劇郴緇熸按騫蟲墿灞曠殑鍚屾椂鍙堣兘淇濊瘉杈冮珮鐨勬ц兘銆?/li>

浠ヤ笅浣跨敤絎洓縐嶆柟妗堬紝闆嗙兢鐜錛?/p>

1. nginx鏈鏂扮増鏈細1.5.7

2. tomcat鐗堟湰錛?.0.37

3. memcached鏈鏂扮増鏈細1.4.15

4. session澶嶅埗鍚屾浣跨敤memcache-session-manager鏈鏂扮増鏈細1.6.5

5. 緋葷粺錛欳entOS6.3


涓銆丯ginx瀹夎

- centos6.3榛樿鏈畨瑁単cc-c++錛屽厛瑁単cc錛?/p>

yum -y install gcc-c++

瑁呭畬鍚庤寰梤eboot緋葷粺銆?/p>

- cd鍒板畨瑁呯洰褰?/p>

cd /usr/lcoal/src

- 瀹夎pcre搴?/p>

澶嶅埗浠g爜
cd /usr/local/src wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz tar -zxvf pcre-8.21.tar.gz cd pcre-8.21 ./configure make make install
澶嶅埗浠g爜

濡傛灉wget涓嬭澆涓嶅埌鐨勮瘽錛屽幓瀹樼綉涓嬭澆pcre-8.12.tar.gz鍖呮嫹璐濆埌src涓嬨?/p>

- 瀹夎zlib搴?/p>

澶嶅埗浠g爜
cd /usr/local/src   wget http://zlib.net/zlib-1.2.8.tar.gz tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure make make install
澶嶅埗浠g爜

- 瀹夎ssl

cd /usr/local/src wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz tar -zxvf openssl-1.0.1c.tar.gz

- 瀹夎nginx

澶嶅埗浠g爜
cd nginx-1.5.7   ./configure --prefix=/usr/local/nginx/nginx \ --with-http_ssl_module \ --with-pcre=/usr/local/src/pcre-8.12 \ --with-zlib=/usr/local/src/zlib-1.2.8 \ --with-openssl=/usr/local/src/openssl-1.0.1c   make make install
澶嶅埗浠g爜

瀹夎鎴愬姛錛宑d /usr/local/nginx/conf/nginx.conf錛屼慨鏀歸厤緗枃浠訛細

澶嶅埗浠g爜
http { ...     upstream localhost {         server    localhost:8081;         server    localhost:8082;         server    localhost:8083;     } ... }   location / {       root   html;       index  index.html index.htm;       proxy_pass   http://localhost;       proxy_redirect    off;       proxy_set_header   Host $host;       proxy_set_header   X-Real-IP $remote_addr;       proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;        client_max_body_size   10m;       client_body_buffer_size   128k;       proxy_connect_timeout   90;       proxy_send_timeout   90;       proxy_read_timeout   90;       proxy_buffer_size   4k;       proxy_buffers   4 32k;       proxy_busy_buffers_size   64k;       proxy_temp_file_write_size  64k;         }

 

澶嶅埗浠g爜

浜屻乵emcached瀹夎

- memcached瀹夎杈冪畝鍗曪紝闇瑕佸厛libevent搴擄細

澶嶅埗浠g爜
sudo yum install libevent libevent-devel  wget http://www.danga.com/memcached/dist/memcached-1.4.15.tar.gz tar zxf memcached-1.4.15.tar.gz cd memcached-1.4.15 ./configure make sudo make install
澶嶅埗浠g爜

瀹夎鎴愬姛錛堥粯璁ゅ畨瑁呭湪bin涓嬶級錛屽惎鍔細

#-vv 鎺у埗鍙拌緭鍑?#-d 鍚庡彴榪愯 /usr/local/bin/memcached -vv

鍚姩鍚庯紝鍙互telnet涓婂幓鐪嬩笅鐘舵侊細

telnet 127.0.0.1 11211  stats

 

 

涓夈乼omcat閰嶇疆

1. 淇敼server.xml

澶嶅埗浠g爜
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">  ...  <Context path="" docBase="/demo/appserver/app/cluster" debug="0" reloadable="true" crossContext="true">     銆銆<Manager 
銆銆銆銆className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.2.43:11211" 銆銆銆銆requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico|jpeg|htm|html)$" 銆銆銆銆sessionBackupAsync="false" 銆銆銆銆sessionBackupTimeout="1800000" 銆銆銆銆copyCollectionsForSerialization="false" 銆銆銆銆transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> </Context>
澶嶅埗浠g爜

2. 娣誨姞mem鍜宮sm鐨勪緷璧杍ar鍖?/p>

couchbase-client-1.2.2.jar

javolution-5.4.3.1.jar

kryo-1.03.jar

kryo-serializers-0.10.jar

memcached-session-manager-1.6.5.jar

memcached-session-manager-tc6-1.6.5.jar

minlog-1.2.jar

msm-kryo-serializer-1.6.5.jar

reflectasm-0.9.jar

spymemcached-2.10.2.jar

娉ㄦ剰鐐癸細

-msm1.6.5渚濊禆浜咰ouchbase錛岄渶瑕佹坊鍔燾ouchbase-client鐨刯ar鍖咃紝鍚﹀垯鍚姩浼氭姤錛歫ava.lang.NoClassDefFoundError: com/couchbase/client/CouchbaseClient銆?/p>

-tomcat6鍜?浣跨敤涓嶅悓msm鏀寔鍖咃細memcached-session-manager-tc6-1.6.5.jar鍜宮emcached-session-manager-tc7-1.6.5.jar錛屽彧鍙変竴錛屽惁鍒欏惎鍔ㄦ姤閿欍?/p>

-msm婧愮爜涓殑lib鍖呯増鏈お浣庯細spymemcached-2.7.jar闇瑕佷嬌鐢?.10.2錛屽惁鍒欏惎鍔╰omcat鎶ラ敊錛?/p>

java.lang.NoSuchMethodError: net.spy.memcached.MemcachedClient.set(Ljava/lang/String;ILjava/lang/Object;)Lnet/spy/memcached/internal/OperationFuture;
at de.javakaffee.web.msm.BackupSessionTask.storeSessionInMemcached(BackupSessionTask.java:227)

kryo-serializers-0.8.jar闇瑕佷嬌鐢?.10鐗堟湰錛屽惁鍒欐姤閿欙細

Caused by: java.lang.ClassNotFoundException: de.javakaffee.kryoserializers.DateSerializer


tomcat鍚姩鎴愬姛鍚庡彲浠ュ幓鍒鋒柊欏甸潰錛宨p绔彛浼氬彉鍖栵紝session鏄笉浼氬彉鍖栫殑錛?/p>

 

memcached鐨勭姸鎬佸彲浠ョ湅鍒板悓姝ession鐨勬搷浣滄棩蹇楋細



fly 2015-02-01 23:19 鍙戣〃璇勮
]]>
Nginx 涓嶵omcat 瀹炵幇鍔ㄩ潤鎬佸垎紱匯佽礋杞藉潎琛?杞?http://www.tkk7.com/jlin/archive/2015/02/01/422635.htmlflyflySun, 01 Feb 2015 15:18:00 GMThttp://www.tkk7.com/jlin/archive/2015/02/01/422635.htmlhttp://www.tkk7.com/jlin/comments/422635.htmlhttp://www.tkk7.com/jlin/archive/2015/02/01/422635.html#Feedback0http://www.tkk7.com/jlin/comments/commentRss/422635.htmlhttp://www.tkk7.com/jlin/services/trackbacks/422635.htmlNginx 涓嶵omcat 瀹炵幇鍔ㄩ潤鎬佸垎紱匯佽礋杞藉潎琛?/a>

涓錛嶯ginx綆浠嬶細

   Nginx涓涓珮鎬ц兘鐨凥TTP鍜屽弽鍚戜唬鐞嗘湇鍔″櫒錛?nbsp;鍏鋒湁寰堥珮鐨勭ǔ瀹氭у拰鏀寔鐑儴緗層佹ā鍧楁墿灞曚篃寰堝鏄撱傚綋閬囧埌璁塊棶鐨勫嘲鍊鹼紝鎴栬呮湁浜烘伓鎰忓彂璧鋒參閫熻繛鎺ユ椂錛屼篃寰堝彲鑳戒細瀵艱嚧鏈嶅姟鍣ㄧ墿鐞嗗唴瀛樿楀敖棰戠箒浜ゆ崲錛屽け鍘誨搷搴旓紝鍙兘閲嶅惎鏈嶅姟鍣紝Nginx閲囧彇浜嗗垎闃舵璧勬簮鍒嗛厤鎶鏈紝澶勭悊闈欐佹枃浠跺拰鏃犵紦瀛樼殑鍙嶅悜浠g悊鍔犻燂紝瀹炵幇浜嗚礋杞藉潎琛″拰瀹歸敊錛屽湪榪欐牱楂樺茍鍙戠殑璁塊棶鎯呭喌涓嬶紝鑳界粡鍙楄搗楂樺茍鍙戠殑澶勭悊銆?/p>

浜岋紟Nginx瀹夎涓庨厤緗?/strong>

  絎竴姝ワ細涓嬭澆Nginx 瀹夎鍖?nbsp;

     http://nginx.org/en/download.html

  絎簩姝ワ細鍦╨inux涓婂畨瑁匩ginx 

    1.#tar zxvf nginx-1.7.8.tar.gz  //瑙e帇

    2.#cd nginx-1.7.8

    3.#./configure --with-http_stub_status_module --with-http_ssl_module//鍚姩server鐘舵侀〉鍜宧ttps妯″潡

浼氭姤緙哄皯PCRE library閿欒錛屽鍥炬墍紺猴細

Nginx 涓嶵omcat 瀹炵幇鍔ㄩ潤鎬佸垎紱匯佽礋杞藉潎琛?

榪欐椂鍏堟墽琛岀涓夋瀹夎PCRE 錛岀劧鍚庡湪3鎵ц涓涓嬶紝榪欏氨鍙互浜?/p>

   4.make && make install //緙栬瘧騫跺畨瑁?/p>

   5.嫻嬭瘯涓涓嬪畨瑁呴厤緗槸鍚︽紜?Nginx瀹夎鍦?usr/local/nginx

    #/usr/local/nginx/sbin/nginx -t錛屽鍥炬墍紺猴細

    Nginx 涓嶵omcat 瀹炵幇鍔ㄩ潤鎬佸垎紱匯佽礋杞藉潎琛?


  絎笁姝ワ細鍦╨inux涓婂畨瑁匬CRE 

    1.#tar zxvf pcre-8.10.tar.gz  //瑙e帇

    2.cd pcre-8.10

    3../configure

    4.make && make install//緙栬瘧騫跺畨瑁?/p>

涓夛紟Nginx +Tomcat 瀹炵幇鍔ㄩ潤鎬佸垎紱?/strong>

 

   鍔ㄩ潤鎬佸垎紱誨氨鏄疦ginx澶勭悊瀹㈡埛绔殑璇鋒眰鐨勯潤鎬侀〉闈?html欏甸潰)鎴栬呭浘鐗囷紝Tomcat澶勭悊瀹㈡埛绔姹傜殑鍔ㄦ侀〉闈紙jsp欏甸潰錛夛紝鍥犱負Nginx澶勭悊鐨勯潤鎬侀〉闈㈢殑鏁堢巼楂樹簬Tomcat銆?/p>

  絎竴姝ワ細鎴戜滑瑕侀厤緗甆ginx鏂囦歡

 #vi /usr/local/nginx/conf/nginx.conf

#user  nobody; worker_processes  1; error_log  logs/error.log; pid       logs/nginx.pid;  events {     use epoll;     worker_connections  1024; }   http {     include       mime.types;     default_type  application/octet-stream;     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';      access_log  logs/access.log  main;     sendfile        on; keepalive_timeout  65; gzip on;   gzip_min_length  1k;   gzip_buffers     4  16k;   gzip_http_version 1.0;   gzip_comp_level 2;   gzip_types  text/plain application/x-javascript text/css application/xml;   gzip_vary on;       server {         listen       80 default;         server_name  localhost;         <span style="color:#ff0000;"> location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //鐢眓ginx澶勭悊闈欐侀〉闈?lt;/span>              {                    root   /usr/tomcat/apache-tomcat-8081/webapps/ROOT;                     expires      30d; //緙撳瓨鍒板鎴風30澶?               }          error_page  404              /404.html;          #redirect server error pages to the static page /50x.html                  error_page   500 502 503 504  /50x.html;         location = /50x.html {             root   html;         }          <span style="color:#ff0000;"> location ~  \.(jsp|do)$  {//鎵鏈塲sp鐨勫姩鎬佽姹傞兘浜ょ粰Tomcat澶勭悊 </span>            <span style="color:#ff0000;"> proxy_pass http://192.168.74.129:8081;  //鏉ヨ嚜jsp鎴栬卍o鐨勫悗緙鐨勮姹備氦緇檛omcat澶勭悊</span>             proxy_redirect off;             proxy_set_header Host $host;    //鍚庣鐨刉eb鏈嶅姟鍣ㄥ彲浠ラ氳繃X-Forwarded-For鑾峰彇鐢ㄦ埛鐪熷疄IP             proxy_set_header X-Real-IP $remote_addr;             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;             client_max_body_size 10m;   //鍏佽瀹㈡埛绔姹傜殑鏈澶у崟鏂囦歡瀛楄妭鏁?            client_body_buffer_size 128k; //緙撳啿鍖轟唬鐞嗙紦鍐茬敤鎴風璇鋒眰鐨勬渶澶у瓧鑺傛暟              proxy_connect_timeout 90;   //nginx璺熷悗绔湇鍔″櫒榪炴帴瓚呮椂鏃墮棿              proxy_read_timeout 90;     //榪炴帴鎴愬姛鍚庯紝鍚庣鏈嶅姟鍣ㄥ搷搴旀椂闂?             proxy_buffer_size 4k;      //璁劇疆浠g悊鏈嶅姟鍣紙nginx錛変繚瀛樼敤鎴峰ご淇℃伅鐨勭紦鍐插尯澶у皬              proxy_buffers  6  32k;       //proxy_buffers緙撳啿鍖猴紝緗戦〉騫沖潎鍦?2k浠ヤ笅鐨勮瘽錛岃繖鏍瘋緗?            proxy_busy_buffers_size 64k;//楂樿礋鑽蜂笅緙撳啿澶у皬錛坧roxy_buffers*2錛?           proxy_temp_file_write_size 64k; //璁懼畾緙撳瓨鏂囦歡澶瑰ぇ灝忥紝澶т簬榪欎釜鍊鹼紝灝嗕粠upstream鏈嶅姟鍣ㄤ紶         }            }    }

 絎簩姝ワ細鍦╰omcat 涓嬬殑webapps/ROOT涓嬫柊寤篿ndex.html闈欐侀〉闈紝濡傚浘鎵紺猴細

Nginx 涓嶵omcat 瀹炵幇鍔ㄩ潤鎬佸垎紱匯佽礋杞藉潎琛? 

  絎笁姝ワ細鍚姩Nginx鏈嶅姟

  #sbin/nginx   濡傚浘鎵紺猴細

   Nginx 涓嶵omcat 瀹炵幇鍔ㄩ潤鎬佸垎紱匯佽礋杞藉潎琛?


 絎洓姝ワ細鎴戜滑欏甸潰璁塊棶http://192.168.74.129/index.html 鑳芥甯告樉紺烘甯哥殑鍐呭錛屽鍥炬墍紺猴細

   Nginx 涓嶵omcat 瀹炵幇鍔ㄩ潤鎬佸垎紱匯佽礋杞藉潎琛?

  

 絎簲姝ワ細嫻嬭瘯Nginx 鍜孴omcat楂樺茍鍙戠殑鎯呭喌涓嬪鐞嗛潤鎬侀〉闈㈡ц兘濡備綍錛?/strong>

    閲囩敤浜?nbsp;Linux  ab緗戠珯鍘嬪姏嫻嬭瘯鍛戒護鏉ユ祴璇曚竴涓嬫ц兘

   1.嫻嬭瘯涓涓婲ginx 澶勭悊闈欐侀〉闈㈢殑鎬ц兘

     ab -c 100 -n 1000 http://192.168.74.129/index.html

     榪欎釜琛ㄧず鍚屾椂澶勭悊100涓姹傚茍榪愯1000嬈ndex.html鏂囦歡,濡傚浘鎵紺猴細

     Nginx 涓嶵omcat 瀹炵幇鍔ㄩ潤鎬佸垎紱匯佽礋杞藉潎琛?

   2.嫻嬭瘯涓涓婽omcat澶勭悊闈欐侀〉闈㈢殑鎬ц兘

     ab -c 100 -n 1000 http://192.168.74.129:8081/index.html

     榪欎釜琛ㄧず鍚屾椂澶勭悊100涓姹傚茍榪愯1000嬈ndex.html鏂囦歡,濡傚浘鎵紺猴細

     Nginx 涓嶵omcat 瀹炵幇鍔ㄩ潤鎬佸垎紱匯佽礋杞藉潎琛?

   鐩稿悓鐨勫鐞嗛潤鎬佹枃浠訛紝Nginx澶勭悊鐨勯潤鎬佹ц兘姣擳omcat 濂姐侼ginx姣忕鑳借姹?388嬈★紝鑰宼omcat鍙姹?609嬈°?/p>


鎬葷粨錛氭垜浠湪Nginx閰嶇疆鏂囦歡涓紝閰嶇疆闈欐佷氦緇橬ginx澶勭悊錛屽姩鎬佽姹備氦緇橳omcat錛屾彁渚涗簡鎬ц兘銆?/p>

 

鍥涳紟Nginx +Tomcat 璐熻澆鍧囪 涓庡閿?/strong>

  鎴戜滑鍦ㄩ珮騫跺彂鐨勬儏鍐典笅錛屼負浜嗘彁楂樻湇鍔″櫒鐨勬ц兘錛屽噺灝戜簡鍗曞彴鏈嶅姟鍣ㄧ殑騫跺彂鍘嬪姏錛屾垜浠噰鐢ㄤ簡闆嗙兢閮ㄧ講錛岃繕鑳借В鍐充負浜嗛伩鍏嶅崟鍙版湇鍔″櫒鎸傛帀錛屾湇鍔′笉鑳借闂繖縐嶆儏鍐典笅錛屽鐞嗗閿欓棶棰樸?/p>


 絎竴姝ワ細鎴戜滑榪欒竟閮ㄧ講浜嗕袱澶﹖omcat鏈嶅姟鍣紝192.168.74.129:8081鍜?92.168.74.129:8082


 絎簩姝ワ細Nginx浣滀負浜嗕唬鐞嗘湇鍔″櫒錛屽鏈嶇璇鋒眰鏈嶅姟鍣ㄧ鏃訛紝閲囩敤浜嗚礋杞藉潎琛℃潵澶勭悊錛岃繖鏍峰氨鑳藉鉤鍧囩殑鎶婂鏈嶇璇鋒眰鍒嗗彂鍒版瘡涓澶╂湇鍔″櫒錛岃繖鏍峰噺灝戞湇鍔″櫒绔殑鍘嬪姏銆傞厤緗甆ginx涓嬬殑nginx.conf鏂囦歡銆?/strong>

   

  #vi /usr/local/nginx/conf/nginx.conf

    

#user  nobody; worker_processes  1; error_log  logs/error.log; pid       logs/nginx.pid;  events {     use epoll;     worker_connections  1024; }   http {     include       mime.types;     default_type  application/octet-stream;     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';      access_log  logs/access.log  main;     sendfile        on; keepalive_timeout  65; gzip on;   gzip_min_length  1k;   gzip_buffers     4  16k;   gzip_http_version 1.0;   gzip_comp_level 2;   gzip_types  text/plain application/x-javascript text/css application/xml;   gzip_vary on;   <span style="color:#ff0000;">upstream localhost_server {         ip_hash;         server 192.168.74.129:8081;         server 192.168.74.129:8082;     }</span>      server {         listen       80 default;         server_name  localhost;        <span style="color:#ff0000;">  location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //鐢眓ginx澶勭悊闈欐侀〉闈?lt;/span>              {                    root   /usr/tomcat/apache-tomcat-8081/webapps/ROOT;                     expires      30d; //緙撳瓨鍒板鎴風30澶?               }          error_page  404              /404.html;          #redirect server error pages to the static page /50x.html                  error_page   500 502 503 504  /50x.html;         location = /50x.html {             root   html;         }           <span style="color:#ff0000;">location ~  \.(jsp|do)$  {//鎵鏈塲sp鐨勫姩鎬佽姹傞兘浜ょ粰Tomcat澶勭悊 </span>            <span style="color:#ff0000;">proxy_pass http://localhost_server;  //鏉ヨ嚜jsp鎴栬卍o鐨勫悗緙鐨勮姹備氦緇檛omcat澶勭悊</span>             proxy_redirect off;             proxy_set_header Host $host;    //鍚庣鐨刉eb鏈嶅姟鍣ㄥ彲浠ラ氳繃X-Forwarded-For鑾峰彇鐢ㄦ埛鐪熷疄IP             proxy_set_header X-Real-IP $remote_addr;             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;             client_max_body_size 10m;   //鍏佽瀹㈡埛绔姹傜殑鏈澶у崟鏂囦歡瀛楄妭鏁?            client_body_buffer_size 128k; //緙撳啿鍖轟唬鐞嗙紦鍐茬敤鎴風璇鋒眰鐨勬渶澶у瓧鑺傛暟              proxy_connect_timeout 90;   //nginx璺熷悗绔湇鍔″櫒榪炴帴瓚呮椂鏃墮棿              proxy_read_timeout 90;     //榪炴帴鎴愬姛鍚庯紝鍚庣鏈嶅姟鍣ㄥ搷搴旀椂闂?             proxy_buffer_size 4k;      //璁劇疆浠g悊鏈嶅姟鍣紙nginx錛変繚瀛樼敤鎴峰ご淇℃伅鐨勭紦鍐插尯澶у皬              proxy_buffers  6  32k;       //proxy_buffers緙撳啿鍖猴紝緗戦〉騫沖潎鍦?2k浠ヤ笅鐨勮瘽錛岃繖鏍瘋緗?            proxy_busy_buffers_size 64k;//楂樿礋鑽蜂笅緙撳啿澶у皬錛坧roxy_buffers*2錛?           proxy_temp_file_write_size 64k; //璁懼畾緙撳瓨鏂囦歡澶瑰ぇ灝忥紝澶т簬榪欎釜鍊鹼紝灝嗕粠upstream鏈嶅姟鍣ㄤ紶         }            }    }


璇存槑錛?/p>

   1.upstream 涓殑server鏄寚鍚戞湇鍔″櫒鐨処P錛堝煙鍚嶏級鍜岀鍙o紝鍚庨潰榪樺彲浠ュ甫鍙傛暟

     1)weight 錛氳緗湇鍔″櫒鐨勮漿鍙戞潈閲?nbsp;榛樿鍊兼槸1銆?/p>

     2)max_fails 錛?nbsp;鏄笌fail_timeout閰嶅悎浣跨敤錛屾槸鎸囧湪fail_timeout鏃墮棿孌靛唴錛屽鏋滄湇鍔″櫒杞彂澶辮觸嬈℃暟瓚呰繃max_fails璁劇疆鐨勫鹼紝榪欏彴鏈嶅姟鍣ㄥ氨涓?                    鍙敤錛宮ax_fails榛樿鍊兼槸1

    3)fail_timeout :琛ㄧず鍦ㄨ鏃墮棿孌靛唴杞彂澶辮觸澶氬皯嬈″氨璁や負榪欏彴鏈嶅姟鍣ㄤ笉鑳界敤銆?/p>

    4)down錛氳〃紺鴻繖鍙版湇鍔″櫒涓嶈兘鐢ㄣ?/p>

     5)backup錛氳〃紺轟嬌ip_hash璁劇疆鐨勯拡瀵硅繖鍙版湇鍔″櫒鏃犳晥錛屽彧鏈夊湪鎵鏈夐潪澶囦喚鐨勬湇鍔″櫒閮藉け鏁堝悗錛屾墠浼氬悜鏈嶅姟鍣ㄨ漿鍙戣姹傘?/p>

 

  2.ip_hash 璁劇疆鏄湪闆嗙兢鐨勬湇鍔″櫒涓紝濡傛灉鍚屼竴涓鎴風璇鋒眰杞彂鍒板涓湇鍔″櫒涓婏紝姣忓彴鏈嶅姟鍣ㄥ彲鑳界紦瀛樺悓涓浠戒俊鎭紝榪欎細閫犳垚璧勬簮鐨勬氮璐癸紝閲囩敤鐨刬p_hash璁劇疆浼氭妸鍚屼竴涓鎴風絎簩嬈¤姹傜浉鍚岀殑淇℃伅鏃訛紝浼氳漿鍙戝埌絎竴嬈¤姹傜殑鏈嶅姟鍣ㄧ銆備絾ip_hash涓嶈兘鍜寃eight 鍚屾椂浣跨敤銆?/p>



fly 2015-02-01 23:18 鍙戣〃璇勮
]]> 主站蜘蛛池模板: 国产成人亚洲精品青草天美| 国产成人免费手机在线观看视频| 亚洲人成国产精品无码| 亚洲日本乱码卡2卡3卡新区| 亚洲黄色免费在线观看| 亚洲午夜精品一区二区| 亚洲无限乱码一二三四区| 美国毛片亚洲社区在线观看| 日本免费人成黄页网观看视频 | 久久精品国产亚洲AV忘忧草18| 久久水蜜桃亚洲AV无码精品| 好爽又高潮了毛片免费下载| 久久精品国产精品亚洲色婷婷| 亚洲综合精品伊人久久| 中文字幕免费播放| 夫妻免费无码V看片| 亚洲精华国产精华精华液好用| 免费精品国产自产拍观看| 一区二区三区在线观看免费| 亚洲国产精品无码av| 四虎最新永久免费视频| 亚洲中文字幕不卡无码| 国产精品亚洲一区二区三区| 亚洲乱码日产精品a级毛片久久| 在线视频网址免费播放| 亚洲尹人香蕉网在线视颅| 91在线视频免费看| 国产亚洲精品91| 国产亚洲3p无码一区二区| 亚洲成年人免费网站| 亚洲精品色在线网站| 一本久久a久久精品亚洲| 最近2019年免费中文字幕高清 | 国产在线19禁免费观看国产| 久久免费香蕉视频| 亚洲一级片在线观看| 亚洲国产精品嫩草影院久久| 日韩精品无码一区二区三区免费 | 国产99视频精品免费专区| 亚洲精品免费网站| 亚洲熟妇无码AV在线播放|