栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第十九周作业

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第十九周作业

第十九周作业
  • haproxy https实现
    • 环境准备
    • 1.准备web
      • 1.1编译安装nginx
      • 1.2nginx 启动文件
    • 2.准备证书
      • 2.1 生成ssl自签证书 生成自签名证书ca
      • 2.2 为服务颁发证书
      • 2.3签发证书
    • 3. 准备haproxy
      • 3.1安装lua
      • 3.2haproxy配置文件
      • 3.4验证
  • 总结tomcat的核心组件以及根目录结构
    • 1.目录结构
      • 1.1bin
      • 1.2conf
      • 1.3 logs
    • 2. Tomcat 核心组件
      • 2.1 Server
      • 2.2 Service
      • 2.3 Connector
      • 2.4 Engine
      • 2.5 Host
      • 2.6 Context
  • tomcat实现多虚拟主机
    • 1.下载jdk
    • 2、安装tomcat
      • 2.1 源码包下载及安装
    • 3.配置虚拟主机
      • 3.1 修改server.xml
      • 3.2 准备数据目录
    • 4、测试
  • nginx实现后端tomcat的负载均衡调度
    • 环境准备
    • 1.安装nginx
      • 参考1.1
    • 2.安装tomcat
      • 参考3.2
    • 3.修改nginx代理
    • 4.配置tomcat
      • 4.1 配置node1
      • 4.2验证
  • 简述memcached的工作原理
    • 5.1内存分配机制
    • 5.2 懒过期 Lazy Expiration
    • 5.3 LRU
    • 5.4 集群

haproxy https实现 环境准备

1.准备web 1.1编译安装nginx
yum install -y gcc pcre-devel openssl-devel zlib-devel lrzsz make
useradd -u 80 nginx -s /sbin/nologin
wget https://nginx.org/download/nginx-1.20.1.tar.gz
tar xf nginx-1.20.1.tar.gz
cd nginx-1.20.1/
mkdir /apps/nginx -p
./configure --prefix=/apps/nginx 
--user=nginx 
--group=nginx 
--with-http_ssl_module 
--with-http_v2_module 
--with-http_realip_module 
--with-http_stub_status_module 
--with-http_gzip_static_module 
--with-pcre 
--with-stream 
--with-stream_ssl_module 
--with-stream_realip_module
make -j 4 && make install
echo "PATH=/apps/nginx/sbin/:$PATH" >/etc/profile.d/nginx.sh
. /etc/profile.d/nginx.sh
chown nginx.nginx -R /apps/nginx/
1.2nginx 启动文件
cat > /usr/lib/systemd/system/nginx.service < /apps/nginx/html/index.html
systemctl daemon-reload
systemctl start nginx
2.准备证书 2.1 生成ssl自签证书 生成自签名证书ca
[root@centos7 ~]#openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt Generating a 4096 bit RSA private key ...++ ..............................................................................................................................................................................................................................................................................................................................................................................................................................................++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shanghai
Locality Name (eg, city) [Default City]:Shanghai
Organization Name (eg, company) [Default Company Ltd]:test.org
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server's hostname) []:ca.test.org
Email Address []:admin@123.org
[root@7-1 certs]#ll
total 8
-rw-r--r-- 1 root root 2102 Nov 28 15:39 ca.crt
-rw-r--r-- 1 root root 3272 Nov 28 15:39 ca.key
2.2 为服务颁发证书
[root@7-1 certs]#openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.test1.org.key -out www.test1.org.csr

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:test.org
Organizational Unit Name (eg, section) []:nginx
Common Name (eg, your name or your server's hostname) []:www.nginx.test.org
Email Address []:root@test1.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:        
An optional company name []:    
##注意国家,省,公司这个三个参数要与CA的对应##
2.3签发证书
[root@7-1 certs]#openssl x509 -req -days 3650 -in www.test1.org.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.test1.org.crt
Signature ok
subject=/C=CN/ST=Guangdong/L=Guangdong/O=test.org/OU=nginx/CN=www.nginx.test.org/emailAddress=root@test1.org
Getting CA Private Key
3. 准备haproxy 3.1安装lua
yum -y install gcc curl openssl-devel libnl3-devel net-snmp-devel make pcre-devel systemd-devel
wget http://www.lua.org/ftp/lua-5.4.3.tar.gz
tar zxf lua-5.4.3.tar.gz -C /usr/local/src
cd /usr/local/src/lua-5.4.3
make all test
#查看版本
lua -v
1.2编译安装haproxy
mkdir /apps/haproxy -p
mkdir /etc/haproxy/conf.d/ -p
mkdir /var/lib/haproxy -p
wget https://www.haproxy.org/download/2.4/src/haproxy-2.4.7.tar.gz
tar xf haproxy-2.4.7.tar.gz
cd && cd haproxy-2.4.7/
make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.4.3/src/ LUA_LIB=/usr/local/src/lua-5.4.3/src/
make install PREFIX=/apps/haproxy/
ln -sf /apps/haproxy/sbin/haproxy /usr/bin/
ln -sf /apps/haproxy/sbin/haproxy /usr/sbin/haproxy
useradd -s /sbin/nologin -d /var/lib/haproxy haproxy
1.3准备haproxy service文件
cat >/usr/lib/systemd/system/haproxy.service< 
3.2haproxy配置文件 
#将准备好的证书合并
cat www.test1.org.crt www.test1.org.key > /etc/haproxy/certs/pana.pam
cat>> /etc/haproxy/haproxy.cfg< 
3.4验证 


总结tomcat的核心组件以及根目录结构 1.目录结构 1.1bin

1.2conf

1.3 logs

2. Tomcat 核心组件

Tomcat核心组件有6个,分别为Tomcat有Server、Service、Connector、Engine、Host和Context等,下面为大家一一介绍:

2.1 Server

Server元素在最顶层,代表整个Tomcat容器,因此它必须是server.xml中唯一一个最外层的元素。一个Server元素中可以有一个或多个Service元素。
Server的主要任务,就是提供一个接口让客户端能够访问到这个Service集合,同时维护它所包含的所有的Service的声明周期,包括如何初始化、如何结束服务、如何找到客户端要访问的Service。

2.2 Service

Service的作用,是在Connector和Engine外面包了一层,把它们组装在一起,对外提供服务。一个Service可以包含多个Connector,但是只能包含一个Engine;其中Connector的作用是从客户端接收请求,Engine的作用是处理接收进来的请求。Tomcat可以提供多个Service,不同的Service监听不同的端口。

2.3 Connector

Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine。通过配置Connector,可以控制请求Service的协议及端口号。

2.4 Engine

Engine组件在Service组件中有且只有一个;Engine是Service组件中的请求处理组件。Engine组件从一个或多个Connector中接收请求并处理,并将完成的响应返回给Connector,最终传递给客户端。
实际上,Engine、Host和Context都是容器,但它们不是平行的关系,而是父子关系:Engine包含Host,Host包含Context。

2.5 Host

Host是Engine的子容器。Engine组件中可以内嵌1个或多个Host组件,每个Host组件代表Engine中的一个虚拟主机。Host组件至少有一个,且其中一个的name必须与Engine组件的defaultHost属性相匹配。
Host虚拟主机的作用,是运行多个Web应用(一个Context代表一个Web应用),并负责安装、展开、启动和结束每个Web应用。

2.6 Context

Context元素代表在特定虚拟主机上运行的一个Web应用。每个Web应用基于WAR文件,或WAR文件解压后对应的目录(这里称为应用目录)。Context是Host的子容器,每个Host中可以定义任意多的Context元素。

tomcat实现多虚拟主机 1.下载jdk

官网地址: https://www.oracle.com/java/technologies/downloads/#java8

1.1安装jdk

#cat install_jdk.sh
#!/bin/bash
DIR=`pwd`
JDK_FILE="jdk-8u291-linux-x64.tar.gz"
JDK_DIR="/usr/local"
color () {
  RES_COL=60
  MOVE_TO_COL="echo -en \033[${RES_COL}G"
  SETCOLOR_SUCCESS="echo -en \033[1;32m"
  SETCOLOR_FAILURE="echo -en \033[1;31m"
  SETCOLOR_WARNING="echo -en \033[1;33m"
  SETCOLOR_NORMAL="echo -en E[0m"
  echo -n "$2" && $MOVE_TO_COL
  echo -n "["
    if [ $1 = "success" -o $1 = "0" ] ;then
      ${SETCOLOR_SUCCESS}
      echo -n $" OK "
    elif [ $1 = "failure" -o $1 = "1" ] ;then
      ${SETCOLOR_FAILURE}
      echo -n $"FAILED"
    else
      ${SETCOLOR_WARNING}
      echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo
}
install_jdk(){
  if ! [ -f "$DIR/$JDK_FILE" ];then
    color 1 "$JDK_FILE 文件不存在"
    exit;
  elif [ -d $JDK_DIR/jdk ];then
    color 1 "JDK 已经安装"
    exit
  else
    [ -d "$JDK_DIR" ] || mkdir -pv $JDK_DIR
  fi
  tar xvf $DIR/$JDK_FILE -C $JDK_DIR
  cd $JDK_DIR && ln -s jdk1.8.* jdk
  export JAVA_PATH="`ls /usr/local/jdk1.* -d`/bin/"
cat > /etc/profile.d/jdk.sh < color 1 "JDK 安装失败" ; exit; }
}

install_jdk

#bash install_jdk.sh
2、安装tomcat 2.1 源码包下载及安装
#wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.75/bin/apache-tomcat-8.5.75.tar.gz
#tar xvf apache-tomcat-8.5.75.tar.gz -C /usr/local
#cd /usr/local/
#ln -s apache-tomcat-8.5.75/ tomcat
#echo 'PATH=/usr/local/tomcat/bin:$PATH' > /etc/profile.d/tomcat.sh
#chmod +x /etc/profile.d/tomcat.sh
#. /etc/profile.d/tomcat.sh
2.2 添加用户
#useradd tomcat -s /sbin/nologin
#chown -R tomcat.tomcat /usr/local/tomcat/
#chown -R tomcat.tomcat /usr/local/apache-tomcat-8.5.75/
2.3 启动tomcat
#startup.sh
3.配置虚拟主机 3.1 修改server.xml
#vim /usr/local/tomcat/conf/server.xml

```bash
...省略
#在最下面添加以下内容
        

        

        
...省略...
3.2 准备数据目录
# mkdir /data/tomcat/webapp{1..3}/ROOT -p
# echo "www.a.com" > /data/tomcat/webapp1/ROOT/index.html;
echo "www.b.com" > /data/tomcat/webapp2/ROOT/index.html;
echo "www.c.com" > /data/tomcat/webapp3/ROOT/index.html
# chown -R tomcat.tomcat /data/tomcat/
 重启tomcat
# catalina.sh stop
# catalina.sh start
4、测试
[root@8-1 ~]#curl www.a.com:8080
www.a.com
[root@8-1 ~]#curl www.b.com:8080
www.b.com
[root@8-1 ~]#curl www.c.com:8080
www.c.com
nginx实现后端tomcat的负载均衡调度 环境准备

1.安装nginx 参考1.1 2.安装tomcat 参考3.2 3.修改nginx代理
 cat  /apps/nginx/conf/nginx.conf
worker_processes  1;

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream tomcat-hosts {
    server    10.0.0.18:8080;
    server    10.0.0.28:8080;
    }
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        location ~* .(jsp|do)$ {
            proxy_pass http://tomcat-server;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
4.配置tomcat 4.1 配置node1

两台后端服务器配置大致相同,下面展示了node1的配置。

 vim /usr/local/tomcat/conf/server.xml
#添加虚拟主机,并且设置为默认主机

    
    

#准备文件目录
#mkdir /data/webapps/ROOT -pv
mkdir: created directory '/data'
mkdir: created directory '/data/webapps'
mkdir: created directory '/data/webapps/ROOT'
# vim /data/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>



    
    tomcat test node1


On <%=request.getServerName() %>
<%=request.getLocalAddr() + ":" + request.getLocalPort() %>
SessionID = <%=session.getId() %>
<%=new Date()%>
#设置权限
# chown -R tomcat.tomcat /data/webapps/

# systemctl restart tomcat
4.2验证

在Windows端配置域名解析,然后打开浏览器访问test.node1.org:8080


验证nginx代理

简述memcached的工作原理 5.1内存分配机制

应用程序运行需要使用内存存储数据,但对于一个缓存系统来说,申请内存、释放内存将十分频繁,非
常容易导致大量内存碎片,最后导致无连续可用内存可用。
Memcached采用了Slab Allocator机制来分配、管理内存。
Page:分配给Slab的内存空间,默认为1MB,分配后就得到一个Slab。Slab分配之后内存按照固定
字节大小等分成chunk。
Chunk:用于缓存记录k/v值的内存空间。Memcached会根据数据大小选择存到哪一个chunk中,
假设chunk有128bytes、64bytes等多种,数据只有100bytes存储在128bytes中,存在少许浪费。
Chunk最大就是Page的大小,即一个Page中就一个Chunk
Slab Class:Slab按照Chunk的大小分组,就组成不同的Slab Class, 第一个Chunk大小为 96B的
Slab为Class1,Chunk 120B为Class 2,如果有100bytes要存,那么Memcached会选择下图中Slab
Class 2 存储,因为它是120bytes的Chunk。Slab之间的差异可以使用Growth Factor 控制,默认
1.25。

5.2 懒过期 Lazy Expiration

memcached不会监视数据是否过期,而是在取数据时才看是否过期,如果过期,把数据有效期限标识为
0,并不清除该数据。以后可以覆盖该位置存储其它数据。

5.3 LRU

当内存不足时,memcached会使用LRU(Least Recently Used)机制来查找可用空间,分配给新记录
使用。

5.4 集群

Memcached集群,称为基于客户端的分布式集群,即由客户端实现集群功能,即Memcached本身不支
持集群
Memcached集群内部并不互相通信,一切都需要客户端连接到Memcached服务器后自行组织这些节
点,并决定数据存储的节点。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/945612.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号