linux运维19

linux运维篇19

  • 一、haproxy https实现
  • 二、总结tomcat的核心组件以及根目录结构
  • 三、tomcat实现多虚拟主机
  • 四、nginx实现后端tomcat的负载均衡调度
  • 五、简述memcached的工作原理

一、haproxy https实现

路由拓扑
在这里插入图片描述
后台web服务器搭建
LAMP架构看这个:LAMP

yum install -y httpd
echo web>/var/www/html/index.html
systemctl start httpd

haproxy配置:
编译安装haproxy方法:haproxy编译
证书原理:ssl证书生成方式

按照上面安装haproxy
mkdir /haproxy/etc/ssl -p  创建ssl证书存放目录
cd /haproxy/etc/ssl/vi ssl.sh  利用脚本快速生成证书#!/bin/bash
#设置CA
CA_SUBJECT="/O=heaven/CN=io"
#设置客户端名称
SUBJECT="/C=CN/ST=Beijing/L=Beijing/O=nginx/CN=haproxy.test.io"
#设置证书文件名
FILE=haproxy.test.ioKEY_SIZE=2048
SERIAL=34
SERIAL2=35
CA_EXPIRE=202002
EXPIRE=365#生成自签名的CA证书
openssl req  -x509 -newkey rsa:${KEY_SIZE} -subj $CA_SUBJECT -keyout ca.key -nodes -days $CA_EXPIRE -out ca.crt#客户端生成私钥和证书申请
openssl req -newkey rsa:${KEY_SIZE} -nodes -keyout ${FILE}.key  -subj $SUBJECT -out ${FILE}.csr
#颁发证书
openssl x509 -req -in ${FILE}.csr  -CA ca.crt  -CAkey ca.key  -set_serial $SERIAL  -days $EXPIRE -out ${FILE}.crt
chmod 600 *.key将客户端的证书和秘钥合并
cat haproxy.test.io.crt haproxy.test.io.key >haproxy.test.io.pem
ls

在这里插入图片描述

haproxy创建配置文件

vi /haproxy/etc/conf.d/web.cfglisten web-hostsbind 192.168.116.130:80bind 192.168.116.130:443 ssl crt /haproxy/etc/ssl/haproxy.test.io.pem mode httplog globalredirect 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 }server web1  192.168.116.132:80 checksystemctl restart haproxy

客户端测试
curl -k https://192.168.116.130
在这里插入图片描述

二、总结tomcat的核心组件以及根目录结构

核心组件:

  • server:tomcat核心组件,可以启动多个tomcat实例,也就是多个server(tomcat)主进程。
  • service(服务):主要用于engine(引擎)和Connector连接器之间的关联,一个service只能有一个引擎。可以有多个service。
  • Connector:连接器。主要用于管理tomcat的端口和http协议,https协议,ajp协议等协议的通信。
  • engine(引擎):主要用来调度客户端的访问请求到网页上。
  • host(虚拟主机):主要定义网站名字,网站目录等信息
  • Context :定义应用程序单独的路径映射和配置等信息

配置文件关系演示:

<?xml version="1.0" encoding="UTF-8"?>#server包括service
<Server port="8005" shutdown="SHUTDOWN"><Service name="Catalina">#service包括connector和engine<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />#engine包括host<Engine name="Catalina" defaultHost="localhost"><Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true"><Context ><Context /></Host></Engine></Service>
</Server>

目录:

  • bin:程序目录,主要存放tomcat启动的程序和脚本
  • conf:配置文件目录,包括server组件配置,网页访问管理,tomcat程序管理规则等配置文件。
  • lib:库目录。主要存放tomcat启动时需要的jar依赖包。
  • logs:日志目录。存放tomcat的网站访问日志,错误日志。
  • work:jsp编译后的结果文件目录。
  • webapps:存放网站文件的目录

三、tomcat实现多虚拟主机

tomcat依赖Java服务,所以要先安装Java服务

Java编译安装:
Java 8的源码包需要注册账户后才能下载:Java下载

tar xf jdk-8u301-linux-x64.tar.gz -C /usr/local/ 解压下载的压缩包
cd /usr/local/
ln -s jdk1.8.0_301/ jdk
vi /etc/profile.d/java.sh
编辑环境变量
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/libsource /etc/profile.d/java.sh
java -version

在这里插入图片描述
tomcat编译:

wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.70/bin/apache-tomcat-8.5.70.tar.gz
tar xf apache-tomcat-8.5.70.tar.gz -C /usr/local/
cd /usr/local/
ln -s apache-tomcat-8.5.70/ tomcat
echo 'PATH=/usr/local/tomcat/bin:$PATH' > /etc/profile.d/tomcat.sh
source /etc/profile.d/tomcat.sh
useradd -r -s /sbin/nologin tomcat
echo "JAVA_HOME=/usr/local/jdk"> /usr/local/tomcat/conf/tomcat.conf
chown  -R tomcat.tomcat /usr/local/tomcat/创建service文件
vi /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.targetsystemctl daemon-reload
systemctl enable tomcat
systemctl start tomcat

创建2个虚拟主机目录

mkdir /data/test{1,2} -p
mkdir /data/test1/ROOT
mkdir /data/test2/ROOTvi /data/test1/ROOT/index.jsp  编译虚拟主机1网页
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>test1</title>
</head>
<body>
<h1>test1</h1>vi /data/test2/ROOT/index.jsp  编译虚拟主机2网页
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>test2</title>
</head>
<body>
<h1>test2</h1>chown -R tomcat.tomcat /data/

配置tomcat主配置文件

设置hosts,要不然不能解析网站
vi /etc/hosts
192.168.116.130 test1.tomcat.aa test2.tomcat.aavi /usr/local/tomcat/conf/server.xml   删除其他,只留下这些
<?xml version="1.0" encoding="UTF-8"?>
<Server><Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector protocol="AJP/1.3"address="::1"port="8009"redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"><Host name="test1.tomcat.aa"  appBase="/data/test1"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host><Host name="test2.tomcat.aa"  appBase="/data/test2"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host></Engine></Service>
</Server>systemctl restart tomcat

客户端测试

设置hosts,要不然不能解析网站
vi /etc/hosts
192.168.116.130 test1.tomcat.aa test2.tomcat.aacurl http://test1.tomcat.aa:8080/
curl http://test2.tomcat.aa:8080/

在这里插入图片描述

四、nginx实现后端tomcat的负载均衡调度

路由拓扑
在这里插入图片描述

tomcat-1配置:

按照上面安装好tomcat,修改主页
vi /usr/local/tomcat/webapps/ROOT/index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>web1</title>
</head>
<body>
<h1>web1</h1>systemctl restart tomcat

tomcat-2配置:

按照上面安装好tomcat,修改主页
vi /usr/local/tomcat/webapps/ROOT/index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>web2</title>
</head>
<body>
<h1>web2</h1>systemctl restart tomcat

nginx配置
编译安装看这个:nginx编译安装

初始化配置
cd /etc/yum.repos.d/
yum install -y wget
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0yum install -y nginx
vi /etc/nginx/nginx.conf   删除文件内容,改为下面这些user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {worker_connections 1024;
}
http {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  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 4096;include             /etc/nginx/mime.types;default_type        application/octet-stream;include /etc/nginx/conf.d/*.conf;upstream webs {server 192.168.116.132:8080;server 192.168.116.133:8080;}server {listen       80;listen       [::]:80;server_name  _;root         /usr/share/nginx/html;include /etc/nginx/default.d/*.conf;error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}location / {proxy_pass http://webs;index index.jsp;}}
}systemctl start nginx

客户端访问测试,默认是轮询状态,也就是一台一次代理

curl http://192.168.116.130

在这里插入图片描述

五、简述memcached的工作原理

官网:memcached

工作原理:memcached采用Slab Allocator机制来分配、管理内存。这个机制会把物理内存分配成默认1M大小的页(page),每个页又分成块(chunk),但是这个块的大小不一样。假如第1页大小是1M,分成了100个块,那么每块大小就是10.24K。但是第2页的块大小是上一页的1.25倍(默认倍数),也就是12.8K一个块。以此类推,直到1页1个块1M内存。

图片描述:
在这里插入图片描述
特性:

  1. 采用key-value(键-值)结构存储数据,没有集合,列表等这种记录格式
  2. 不支持持久化保存数据,所有数据保存在内存中,一旦断电就会丢失。
  3. value的最大容量为1M,不适合大量数据存储
  4. 采用预分配内存机制管理内存,能够省去分配内存的时间
  5. 使用非阻塞I/O复用结构,数据存储效率高
  6. 支持多线程方式存储数据
  7. 懒淘汰机制:当数据需要删除时只是标记为0(过期),有新数据再把老的数据覆盖。
  8. 单机的QPS(每秒查询量)最高可以达60W,适合并发量高的场景
  9. 服务端不支持集群功能,无法实现高可用负载。但是源代码开放,可以通过修改代码实现集群功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1383156.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

收集的 Linux VPS 在线重装系统脚本

因为 VPS 上预装的操作系统我并不习惯&#xff0c;所以打算重装一个。有的 VPS 服务商提供了较多种类的系统选择&#xff0c;有的却没有。如果你发现你希望重装的系统服务商没有提供&#xff0c;可以考虑自己安装。 本文内容 重装脚本 - 来自萌咖CentOS -> Debian 重装脚本 …

【运维】——服务器装Linux系统

一、用软碟通刻录系统光盘 1打开软碟通软件&#xff0c;打开文件-------选择Linux系统 2选择启动----写入硬盘映像 3开始写入硬盘映像&#xff0c;静等进度条走完即可。 二、开始安装Linux系统 1给主机插上刚刚刻录好的系统光盘&#xff0c;选择启动项 2设置信息&#xff1a;…

Linux入门---环境搭建(腾讯云服务器)、XShell远程登陆Linux

Linux环境搭建和远程登陆Linux Linux环境搭建XShell远程登陆Linux Linux环境搭建 主要有三种方式&#xff1a; 1.直接安装在物理机上&#xff0c;但是由于Linux桌面使用起来非常不友好&#xff0c;不推荐。 2.使用虚拟机软件&#xff0c;将Linux搭建在虚拟机上&#xff0c;但是…

Linux系统运维1 运维 项目研发 网站 服务器 计算机基础 Linux操作系统

运维的基本概念 运维行业前景 企业运作模式 四大部门 项目研发流程 职责描述&#xff1a; 运维的作用&#xff1a; 网站的相关概念 网站运行流程&#xff1a; IP<–>域名 重要概念&#xff1a; 服务器图片&#xff1a; 服务器&#xff1a;为用户提供服务的机器&…

linux运维14

linux运维篇14 一、简述CGI与FASTCGI区别二、 编译安装基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构三、通过loganalyzer展示数据库中的日志&#xff08;cgi模式&#xff09; 一、简述CGI与FASTCGI区别 CGI模式&#xff1a;当用户访问网站的动态资源时&#xff…

【从零开始学习JAVA | 第四十五篇】动态代理

目录 前言&#xff1a; 动态代理&#xff1a; 动态代理实现步骤&#xff1a; 动态代理的应用场景&#xff1a; 总结&#xff1a; 前言&#xff1a; 动态代理作为一种强大的编程技术&#xff0c;不仅为我们提供了灵活性和可扩展性&#xff0c;还为软件开发和系统设计带来了…

布隆过滤器在缓存系统中的实践

一. 背景 在业务开发中&#xff0c;在并发量很高的情况下&#xff0c;通常会使用缓存对系统查询性能进行优化&#xff0c;在缓存命中率很高的情况下&#xff0c;缓存的使用能够大幅提升系统查询性能。但是在缓存命中率非常低场景下&#xff0c;如果采用传统缓存读取模式&#…

Redisson_布隆过滤器

应用场景 去重 诞生背景 Java应用一般通过JDK自身提供的HashSet去重&#xff0c;通过contains()方法判断当前元素是否存在于Set中。该方式要求在调用contains()前&#xff0c;已经将数据列表加载到内存中&#xff08;即该方法基于内存存储实现判断功能&#xff09;。 缺点: 1.满…

【布隆过滤器】

我是&#x1f31f;廖志伟&#x1f31f;&#xff0c;一名&#x1f315;Java开发工程师&#x1f315;、&#x1f4dd;Java领域优质创作者&#x1f4dd;、&#x1f389;CSDN博客专家&#x1f389;、&#x1f339;幕后大佬社区创始人&#x1f339;。拥有多年一线研发经验&#xff0…

xmind用例数据上传至禅道

xmind格式参考&#xff0c;只需要在一级子主题填写对应用例模块ID&#xff0c;其余格式随意即可生成用例并直接上传到禅道&#xff1a; 代码里需填写禅道对应登录账号及用例所属产品 import requests import json import re import hashlib import pprint import threading fr…

认识相机

认识相机 在Threejs中相机的表示是THREE.Camera&#xff0c;它是相机的抽象基类&#xff0c;其子类有两种相机&#xff0c;分别是正投影相机THREE.OrthographicCamera和透视投影相机THREE.PerspectiveCamera。类图如下所示&#xff1a; 透视投影相机&#xff08;PerspectiveCam…

【项目实践】海康威视工业相机SDK开发小白版入门教程(VS2015+OpenCV4.5.1)

本文目录 前言怎么查找资料&#xff1f;数据手册例程 项目开发VS版本与OpenCV版本选择VS配置OpenCVVS添加MVS安装目录下的头文件和库VS项目开发 编程问题记录相机数据如何转换为OpenCV的Mat类型&#xff1f;函数不能修改全局指针变量&#xff1f;OpenCV运行报错“有未经处理的异…

Azure Kinect sdk 入门,简单使用深度相机

首先要安装azure Kinect dk传感器和人体跟踪的软件 先安装传感器&#xff1a;Azure-Kinect-Sensor-SDK/usage.md at develop microsoft/Azure-Kinect-Sensor-SDK GitHub 在这个网址里下载&#xff0c; 点击红笔画出来的地方&#xff0c;下载安装&#xff0c;记住安装路径&a…

入门级数码相机

为了满足不同层次顾客的购买要求&#xff0c;小编今天给大家交上一篇家用DC完全导购。从200万像素到800万像中间&#xff0c;分别选取了几款各级别中值得推荐的DC为大家推荐。在这里先给朋友们提一下目前数码相机市场相素与价位之间的简单联系。 目前&#xff0c;200万像素的数…

【计算机视觉-从入门到精通系列】 第二章 相机模型

2.1 针孔模型 计算机视觉是一门研究如何让计算机“看”世界的学科。人要看到世界需要眼睛&#xff0c;计算机要看到世界同样也需要“眼睛”&#xff0c;计算机的“眼睛”主要就是相机。实际应用中&#xff0c;相机的种类纷繁复杂&#xff0c;包括手机和平板电脑的相机&#xff…

5分钟入门Cinemachine智能相机系统

摘要&#xff1a;相机是Unity世界的眼睛&#xff0c;一个智能相机更是能帮咱们节省大把的时间和精力。Cinemachine现在已经大量应用到各种项目中&#xff0c;如果你还没有用过Cinemachine&#xff0c;墙裂建议你来体验一下。 你好&#xff0c;我是跟着大智学Unity的萌新&#x…

立体视觉入门指南(1):坐标系与相机参数

亲爱的同学们&#xff0c;我们的世界是3D世界&#xff0c;我们的双眼能够观测三维信息&#xff0c;帮助我们感知距离&#xff0c;导航避障&#xff0c;从而翱翔于天地之间。而当今世界是智能化的世界&#xff0c;我们的科学家们探索各种机器智能技术&#xff0c;让机器能够拥有…

camera学习入门指南

等待补充。 1.背景介绍 近年来&#xff0c;随着消费电子领域市场的快速增长&#xff0c;如安防、图像等领域&#xff0c;camera市场得到了快速发展。智能手机这几年以拍照作为主打卖点&#xff0c;带动了camera&#xff08;CCM&#xff09;出货。 具体可以看电子行业分析或者券…

机器视觉——入门基础(三)——相机镜头选型

目录 相机选型 分辨率、快门、帧率、色彩、靶面、接口 镜头选型 分辨率、靶面、焦距、接口、光圈畸变工作距离 常用计算示例 相机选型 分辨率、快门、帧率、色彩、靶面、接口 镜头选型 分辨率、靶面、焦距、接口、光圈畸变工作距离 常用计算示例 1. 面阵相机和镜头选型 已…

划重点!| 必须了解的工业相机入门级知识

工业相机是机器视觉系统的核心部件&#xff0c;其相关基础知识是行业内人员必须熟知的。那么分辨率、像素深度、行频、信噪比具体是指什么&#xff1f;CCD和CMOS又该如何去进行选择&#xff1f;今天我们就对这些内容进行一个简单的梳理&#xff0c;希望能够帮助大家了解更多。 …