第19周-2022-05-09

1鄙煤、haproxy https實(shí)現(xiàn)

環(huán)境:
haproxy服務(wù)器:192.168.184.101
nginx后端:192.168.184.102

nginx后端頁面:

[root@centos7-02 ~]# cat /usr/local/nginx/html/test.html 
<h1>https://www.example.com</h1>
<h2>192.168.184.102</h2>

haproxy配置:

#生成證書
[root@centos7-01 conf.d]# mkdir /etc/haproxy/certs/
[root@centos7-01 conf.d]# cd /etc/haproxy/certs/
[root@centos7-01 certs]# openssl genrsa -out example.key 2048
[root@centos7-01 certs]# openssl req -new -x509 -key example.key -out example.crt -days 365 -subj "/CN=www.example.com"
[root@centos7-01 certs]# cat example.key example.crt > example.pem

#修改配置文件
[root@centos7-01 certs]# cat /etc/haproxy/conf.d/test.cfg 
frontend example_http_port
  bind 192.168.184.101:80
  bind 192.168.184.101:443 ssl crt /etc/haproxy/certs/example.pem
  redirect scheme https if !{ ssl_fc }
  http-request set-header X-forwarded-Port %[dst_port]
  http-request add-header X-forwarded-Proto https if { ssl_fc }
  mode http
  balance roundrobin
  log global
  option httplog
  acl acl_example_domain hdr_dom(host) -i www.example.com
  use_backend example_hosts if acl_example_domain
backend example_hosts
  mode http
  server web1 192.168.184.102:80 check inter 2000 fall 3 rise 5
[root@centos7-01 certs]# systemctl restart haproxy

windows上修改DNS解析:192.168.184.101 www.example.com
測試訪問:

2展哭、總結(jié)tomcat的核心組件以及根目錄結(jié)構(gòu)

tomcat核心組件:

  • 頂級(jí)組件
    Server泼掠,代表整個(gè)Tomcat容器燃乍,一臺(tái)主機(jī)可以啟動(dòng)多tomcat實(shí)例悟泵,需要確保端口不要產(chǎn)生沖突
  • 服務(wù)類組件
    Service香到,實(shí)現(xiàn)組織Engine和Connector图柏,建立兩者之間關(guān)聯(lián)關(guān)系, service 里面只能包含一個(gè)Engine
  • 連接器組件
    Connector序六,有HTTP(默認(rèn)端口8080/tcp)、HTTPS(默認(rèn)端口8443/tcp)爆办、AJP(默認(rèn)端口8009/tcp)協(xié)議的連接器难咕,AJP(Apache Jserv protocol)是一種基于TCP的二進(jìn)制通訊協(xié)議课梳。
  • 容器類
    Engine距辆、Host(虛擬主機(jī))、Context(上下文件,解決路徑映射)都是容器類組件暮刃,可以嵌入其它組件跨算,內(nèi)部配置如何運(yùn)行應(yīng)用程序。
  • 內(nèi)嵌類
    可以內(nèi)嵌到其他組件內(nèi)椭懊,valve诸蚕、logger、realm氧猬、loader背犯、manager等。以logger舉例盅抚,在不同容器組件內(nèi)分別定義漠魏。
  • 集群類組件
    listener、cluster

目錄結(jié)構(gòu):
bin:服務(wù)啟動(dòng)妄均、停止等相關(guān)程序和文件
conf:配置文件
lib:庫目錄
logs:日志目錄
webapps:應(yīng)用程序柱锹,應(yīng)用部署目錄
work:jsp編譯后的結(jié)果文件,建議提前預(yù)熱訪問

3丰包、tomcat實(shí)現(xiàn)多虛擬主機(jī)

安裝jdk

#下載安裝包:https://www.oracle.com/java/technologies/downloads/archive/
[root@centos7-01 local]# tar xvf jdk-8u331-linux-x64.tar.gz -C /usr/local/
[root@centos7-01 ~]# cd /usr/local/
[root@centos7-01 local]# ln -s jdk1.8.0_331/ jdk
#配置環(huán)境變量
[root@centos7-01 local]# cat /etc/profile.d/jdk.sh 
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
[root@centos7-01 local]# . /etc/profile.d/jdk.sh

二進(jìn)制安裝tomcat

[root@centos7-01 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.78/bin/apache-tomcat-8.5.78.tar.gz
[root@centos7-01 ~]# tar xf apache-tomcat-8.5.78.tar.gz -C /usr/local/
[root@centos7-01 ~]# cd /usr/local/
[root@centos7-01 local]# ln -s apache-tomcat-8.5.78/ tomcat
[root@centos7-01 local]# echo 'PATH=/usr/local/tomcat/bin:$PATH' > /etc/profile.d/tomcat.sh
[root@centos7-01 local]# . /etc/profile.d/tomcat.sh
#創(chuàng)建tomcat專用帳戶
[root@centos7-01 local]# useradd -r -s /sbin/nologin tomcat
#準(zhǔn)備service文件中相關(guān)環(huán)境文件
[root@centos7-01 local]# vi /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/usr/local/jdk
[root@centos7-01 local]# chown -R tomcat.tomcat /usr/local/tomcat/
#創(chuàng)建tomcat.service文件
[root@centos7-01 local]# cat /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
[root@centos7-01 local]# systemctl daemon-reload
[root@centos7-01 local]# systemctl enable --now tomcat

多虛擬主機(jī)配置

[root@centos7-01 local]# vi /usr/local/tomcat/conf/server.xml
#在文件最后面增加下面內(nèi)容
      ...
      <Host name="web1.example.com" appBase="/data/webapps/web1" unpackWARs="True"
          autoDeploy="false">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
          prefix="web1_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
      <Host name="web2.example.com" appBase="/data/webapps/web2" unpackWARs="True"
          autoDeploy="false">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
          prefix="web2_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>
#準(zhǔn)備虛擬主機(jī)的數(shù)據(jù)目錄
[root@centos7-01 local]# mkdir -p /data/webapps/web{1,2}/ROOT
[root@centos7-01 local]# echo web1.example.com > /data/webapps/web1/ROOT/index.html
[root@centos7-01 local]# echo web2.example.com > /data/webapps/web2/ROOT/index.html
[root@centos7-01 local]# systemctl restart tomcat

驗(yàn)證:

#配置hosts解析
[root@centos7-03 ~]# vi /etc/hosts
192.168.184.101 web1.example.com web2.example.com
#測試訪問
[root@centos7-03 ~]# curl http://web1.example.com:8080
web1.example.com
[root@centos7-03 ~]# curl http://web2.example.com:8080
web2.example.com

4禁熏、nginx實(shí)現(xiàn)后端tomcat的負(fù)載均衡調(diào)度

tomcat1 192.168.184.101
tomcat2 192.168.184.102
nginx 192.168.184.103

tomcat配置

#tomcat1和tomcat2添加以下配置
[root@centos7-01 ~]# vi /usr/local/tomcat/conf/server.xml
      <Host name="tomcat-server" appBase="/data/webapps" unpackWARs="True" autoDeploy="false">
      </Host>

#在tomcat1和tomcat2創(chuàng)建相同頁面文件
[root@centos7-01 ~]# mkdir -p /data/webapps/ROOT
#編寫測試jsp文件
[root@centos7-01 ~]# vi /data/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tomcat test</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + ":" + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>

#配置權(quán)限
[root@centos7-01 ~]# chown -R tomcat.tomcat /data/webapps/
[root@centos7-01 ~]# systemctl restart tomcat

nginx配置

[root@centos7-03 ~]# vi /etc/nginx/nginx.conf
#在http語句塊中修改
    upstream tomcat-server {
      server t1.example.com:8080;
      server t2.example.com:8080;
    }
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;
        location ~* \.jsp$ {
          proxy_pass http://tomcat-server;
        }

#修改hosts文件
[root@centos7-03 ~]# vi /etc/hosts
192.168.184.101 t1.example.com
192.168.184.102 t2.example.com

測試訪問



5、簡述memcached的工作原理

1.內(nèi)存分配機(jī)制
應(yīng)用程序運(yùn)行需要使用內(nèi)存存儲(chǔ)數(shù)據(jù)邑彪,但對(duì)于一個(gè)緩存系統(tǒng)來說瞧毙,申請(qǐng)內(nèi)存、釋放內(nèi)存將十分頻繁寄症,非常容易導(dǎo)致大量內(nèi)存碎片升筏,最后導(dǎo)致無連續(xù)可用內(nèi)存可用。
Memcached采用了Slab Allocator機(jī)制來分配瘸爽、管理內(nèi)存您访。

  • Page:分配給Slab的內(nèi)存空間,默認(rèn)為1MB剪决,分配后就得到一個(gè)Slab灵汪。Slab分配之后內(nèi)存按照固定字節(jié)大小等分成chunk檀训。
  • Chunk:用于緩存記錄k/v值的內(nèi)存空間。Memcached會(huì)根據(jù)數(shù)據(jù)大小選擇存到哪一個(gè)chunk中享言,假設(shè)chunk有128bytes峻凫、64bytes等多種,數(shù)據(jù)只有100bytes存儲(chǔ)在128bytes中览露,存在少許浪費(fèi)荧琼。
    • Chunk最大就是Page的大小,即一個(gè)Page中就一個(gè)Chunk
  • Slab Class:Slab按照Chunk的大小分組差牛,就組成不同的Slab Class, 第一個(gè)Chunk大小為 96B的Slab為Class1,Chunk 120B為Class 2,如果有100bytes要存命锄,那么Memcached會(huì)選擇下圖中Slab Class 2 存儲(chǔ),因?yàn)樗?20bytes的Chunk偏化。Slab之間的差異可以使用Growth Factor 控制脐恩,默認(rèn)1.25。

2.懶過期 Lazy Expiration
memcached不會(huì)監(jiān)視數(shù)據(jù)是否過期侦讨,而是在取數(shù)據(jù)時(shí)才看是否過期驶冒,如果過期,把數(shù)據(jù)有效期限標(biāo)識(shí)為0,并不清除該數(shù)據(jù)韵卤。以后可以覆蓋該位置存儲(chǔ)其它數(shù)據(jù)骗污。

3.LRU
當(dāng)內(nèi)存不足時(shí),memcached會(huì)使用LRU(Least Recently Used)機(jī)制來查找可用空間沈条,分配給新記錄使用需忿。

4.集群
Memcached集群,稱為基于客戶端的分布式集群拍鲤,即由客戶端實(shí)現(xiàn)集群功能贴谎,即Memcached本身不支持集群
Memcached集群內(nèi)部并不互相通信,一切都需要客戶端連接到Memcached服務(wù)器后自行組織這些節(jié)點(diǎn)季稳,并決定數(shù)據(jù)存儲(chǔ)的節(jié)點(diǎn)擅这。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市景鼠,隨后出現(xiàn)的幾起案子仲翎,更是在濱河造成了極大的恐慌,老刑警劉巖铛漓,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溯香,死亡現(xiàn)場離奇詭異,居然都是意外死亡浓恶,警方通過查閱死者的電腦和手機(jī)玫坛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來包晰,“玉大人湿镀,你說我怎么就攤上這事炕吸。” “怎么了勉痴?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵赫模,是天一觀的道長。 經(jīng)常有香客問我蒸矛,道長瀑罗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任雏掠,我火速辦了婚禮斩祭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘磁玉。我一直安慰自己停忿,他們只是感情好驾讲,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布蚊伞。 她就那樣靜靜地躺著,像睡著了一般吮铭。 火紅的嫁衣襯著肌膚如雪时迫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天谓晌,我揣著相機(jī)與錄音掠拳,去河邊找鬼。 笑死纸肉,一個(gè)胖子當(dāng)著我的面吹牛溺欧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柏肪,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼姐刁,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了烦味?” 一聲冷哼從身側(cè)響起聂使,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谬俄,沒想到半個(gè)月后柏靶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溃论,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年屎蜓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钥勋。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炬转,死狀恐怖控汉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情返吻,我是刑警寧澤姑子,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站测僵,受9級(jí)特大地震影響街佑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捍靠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一沐旨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榨婆,春花似錦磁携、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烟央,卻和暖如春统诺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疑俭。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國打工粮呢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钞艇。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓啄寡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哩照。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挺物,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容