zabbix重要组件说明

1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;
2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3)web interface:zabbix的GUI接口;
4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;
5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;

mysql备份之一:

1.使用mysqldump备份恢复

[root@node1 ~]# mysql -e 'SHOW MASTER STATUS' #查看当前二进制文件的状态, 并记录下position的数字
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 106 | | |
+------------------+----------+--------------+------------------+[root@node1 ~]# mysqldump --all-databases --lock-all-tables > backup.sql #备份数据库到backup.sql文件中mysql> CREATE DATABASE TEST1; #创建一个数据库
Query OK, 1 row affected (0.00 sec)mysql> SHOW MASTER STATUS; #记下现在的position
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 191 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)[root@node1 ~]# cp /var/lib/mysql/mysql-bin.000003 /root #备份二进制文件
[root@node1 ~]# service mysqld stop #停止MySQL
[root@node1 ~]# rm -rf /var/lib/mysql/* #删除所有的数据文件
[root@node1 ~]# service mysqld start #启动MySQL, 如果是编译安装的应该不能启动(需重新初始化), 如果rpm安装则会重新初始化数据库mysql> SHOW DATABASES; #查看数据库, 数据丢失!
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)mysql> SET sql_log_bin=OFF; #暂时先将二进制日志关闭
Query OK, 0 rows affected (0.00 sec)mysql> source backup.sql #恢复数据,所需时间根据数据库时间大小而定mysql> SET sql_log_bin=ON; 开启二进制日志mysql> SHOW DATABASES; #数据库恢复, 但是缺少TEST1
+--------------------+
| Database |
+--------------------+
| information_schema |
| employees |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)[root@node1 ~]# mysqlbinlog --start-position=106 --stop-position=191 mysql-bin.000003 | mysql employees #通过二进制日志增量恢复数据mysql> SHOW DATABASES; #现在TEST1出现了!
+--------------------+
| Database |
+--------------------+
| information_schema |
| TEST1 |
| employees |
| mysql |
| test |
+--------------------+
5 rows in set (0.00 sec)

安装Memcached服务器

1、安装libevent

Libevent是一款跨平台的事件处理接口的封装,可以兼容多个操作系统的事件访问。 Memcached的安装依赖于Libevent,因此需要先完成Libevent的安装。yum install gcc gcc-c++ make -y #yum安装gcc编译环境包
解压软件包
tar xvf libevent-2.1.8-stable.tar.gz
tar xvf memcached-1.5.6.tar.gz
cd libevent-2.1.8-stable/
./configure --prefix=/usr/local/libevent
make && make install
到此libevent安装完毕

2、安装Memcached

安装配置时需指定libevent的安装路径cd ../memcached-1.5.6/
./configure \
--prefix=/usr/local/memcached \
--with-libevent=/usr/local/libevent/ #指定libevent安装路径
make && make install优化memcached服务创建软连接,方便使用memcached服务命令
ln -s /usr/local/memcached/bin/* /usr/local/bin/启动服务
启动 memcached(-d:守护进程、-m:指定缓存大小为32M 、-p:指定默认端口11211 、 -u:指定 登陆用户为 root)memcached -d -m 32m -p 11211 -u root
netstat -antp | grep memcached #查看启动监听端口

MogileFS特性

mogilefs的高可用不包括数据库 所以数据库的高可用要自己做1.基于http 存储 所以非常适用于web站点中
2.数据存储冗余
3.自动文件复制
4.简单名称空间(可取名的范围就叫命名空间,MogileFS没有目录的概念)
5.不共享任何东西 shared-nothing
6.自动提供冗余,不需要raid设备
7.不能追加写,随机写,只能整个文件替换
8.Tracker client传输,管理数据复制,删除,查询,修复及其监控
9.数据通过HTTP/WEBDAV服务上传到Storage node(数据存储时的服务为Mogstored)
10.mysql存储mogilefs的元数据统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
netstat -tun | grep [0-9] | tr -s ' ' | cut -d ' ' -f5 | cut -d: -f1 | sort | uniq -c | sort -nr

临时和永久关闭Selinux

临时关闭:[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive永久关闭:
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
重启服务reboot

awk 一些内置函数使用技巧

1. 使用awk内置函数获取随机数
awk 'BEGIN{srand();fr=int(100*rand());print fr;}'2. 逐行读取外部文件(getline使用方法)
awk 'BEGIN{while(getline < "/etc/passwd"){print $0;};close("/etc/passwd");}'3. 调用外部应用程序(system使用方法)
awk 'BEGIN{b=system("ls -al");print b;}'4. 字符串分割(split使用)
awk 'BEGIN{info="this is a test";split(info,tA," ");print length(tA);for(k in tA){print k,tA[k];}}'

dns软件的选型

DNS在企业内网环境中的应用比较广泛,那么市面上一些常用的dns软件该如何选型呢?
dnsmasq:适合小型的应用环境,解析记录直接保存在文件中类似于hosts文件一样.使用较为简单方便
bind: 应用比较广泛,目前来说互联网上大部分的dns服务器都使用的是bind来构建的,默认也是配置文件方式管理解析记录,配置比较复杂,管理解析记录不太友好
powerdns:成立于1990年,也是一个老牌dns服务器软件了.默认支持mysql来存储解析记录,并佩带了web管理页面.安装配置及使用很方便

关于智能dns

所谓的智能dns就是根据客户端的ip地址的不同对应解析到不同的记录
那么智能dns一般常用于cdn类应用里面,比如说直播界如何应用的
主播的直播视频流产生后会分发到全国各地的缓存服务器中,假如北京、上海、广州三地建立了缓存服务器,
对应的域名的智能dns解析记录会对应各地的缓存服务器,如果是北京来的客户端则返回北京的服务器IP,如果是广州的客户端则返回广州的服务器IP
这样一来看直播的用户电脑的客户端就近访问服务器速度就会很快

nslookup使用详解

直接查询某域名的IP,默认使用系统的dns服务器来查询

nslookup www.baidu.com

指定dns服务器查询某域名,指定使用114.114.114.114dns服务器来查询域名

nslookup www.baidu.com 114.114.114.114

指定查询某域名的记录类型,默认查询的是A记录

nslookup -qt=MX mail.163.com
可查询的类型有如下
A 地址记录
AAAA 地址记录
AFSDB Andrew文件系统数据库服务器记录
ATMA ATM地址记录
CNAME 别名记录
HINFO 硬件配置记录,包括CPU、操作系统信息
ISDN 域名对应的ISDN号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录
RP 负责人记录
RT 路由穿透记录
SRV TCP服务器信息记录
TXT 域名对应的文本信息
X25 域名对应的X.25地址记录

httpd编译安装常用选项说明

指定配置文件的目录

--sysconfdir=/etc/httpd

如果是编译安装的apr且指定了特殊目录则需要使用此选项指定apr安装的目录

--with-apr=/usr/local/apr

如果是编译安装的apr-util且指定了特殊目录则需要使用此选项指定apr-util安装的目录

--with-apr-util=/usr/local/apr-util

将http的功能编译为模块

–enable-so

启用ssl

–enable-ssl

启用cgi

–enable-cgi

启用重写

–enable-rewrite

添加zlib

–with-zlib

添加pcre

–with-pcre

自签证书实现https

1、建立一个用于存放证书的目录
mkdir /etc/httpd/.sslkey
2、建立网站私钥文件
cd /etc/httpd/.sslkey
openssl genrsa -out https.key 1024
3、建立网站证书文件 在建立的过程中需要输入一些信息 可以根据自己的需要去输入但 Common Name 信息时必须填写为访问此网站的FQDN名,既域名
openssl req -new -x509 -key https.key -out https.crt
4、处于安全的考虑可以把存放证书的目录权限设为400
chmod 400 /etc/httpd/.sslkey
5、配置网站www.xxx.com为https
vim /etc/httpd/conf.d/www.xxx.com.conf
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin admin@andy.com
DocumentRoot /web/www
ServerName www.andy.com
SSLEngine on
SSLCertificateFile /etc/httpd/.sslkey/https.crt
SSLCertificateKeyFile /etc/httpd/.sslkey/https.key
ErrorLog logs/www.xxx.com.err.log
CustomLog logs/www.xxx.com.access.log common
</VirtualHost>

vsftpd配置文件详解

anonymous_enable=yes 是否允许匿名用户访问
anon_umask=022 设置匿名用户所上传文件的默认权限掩码
anon_root=/var/ftp 设置匿名用户的ftp根目录(不设置默认在/var/ftp目录下)
anon_upload_enable=yes 是否允许匿名用户上传文件
anon_mkdir_write_enable=yes 是否允许匿名用户创建目录的写入权限
anon_other_write_enable=yes 是否允许匿名用户有其它写入权限如:对文件 改名 覆盖 及删除
anon_max_rate=0 限制匿名用户最多传输速率0为不限制
local_enable=yes 是否允许本地系统访问
local_umask=022 设置本地用户所上传的文件默认权限掩码
local_root=/var/ftp 设置本地用户的ftp跟目录
chroot_local_user=yes 是否将ftp本地用户禁锢在宿主目录里
local_max_rate=0 限制本地用户最大的传输速率0为不限制 (单位为字节)
listen=yes 是否以独立运行的方式监听服务
listen_port=21 设置监听ftp服务的端口
write_enable=yes 启用任何形式的写入权限(如上传 删除文件等) 都需要开启此项
download_enable=yes 是否允许下载文件(建立仅限于浏览,上传的ftp服务器是此项可设为NO)
dirmessage_enable=yes 用户切换进入目录时显示message文件(如果存在)的内容
xferlog_enable=yes 启用xferlog日志 默认记录到/var/log/xferlog文件
xferlog_std_format=yes 启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
connect_from_Port_20=yes 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=yes 允许被动模式连接
pasv_max_port=24600 设置用于被动模式的服务器的最大端口号
pasv_ min_port=24500 设置用于被动模式的服务器的最小端口号
pam_Service_name=vsftpd 设置用于用户认证的PAM文件位置
userlist_enable=yes 是否启用use_list用户列表文件
userlist_deny=yes 是否禁止user_list用户列表中的用户
max_clients=0 最多允许多少个客户端同时连接(0为无限制)
max_per_ip=0 对来自相同ip地址的客户端最多允许多少个并发连接数(0 为无限制)
tcp_wrappers=yes 是否启用tcp_wrappers 机制

mysql命令行使用详解

客户端命令

mysql --help # 查看mysql命令的帮助信息
--host, -h # 指定要连接的远程mysql数据库的IP或域名
--user, -u # 指定连接mysql服务器的用户名
--password,-p # 指定连接mysql服务器的用户的密码
--port,-P # 指定需要连接的mysql服务器的端口
--database,-D # 指定连接mysql服务器之后的默认数据库
--execute,-e # 在非交互式模式下执行mysql指令,如 mysql -e "show databases;"
--version,-V # 显示mysql的版本信息
--html,-H # 执行语句的返回结果以html格式返回
--xml,-X # 执行语句的返回结果以xml格式返回mysqladmin --help # 显示帮助信息
ping # 检测mysql服务器是否在线
processlist # 查看正在执行的线程列表
status # 查看mysql服务器的状态
--sleep # 睡眠多长时间再执行,循环执行
--count # 执行多少次
extended-status # 显示状态变量及值
variables # 显示服务器变量
flush-privileges# 刷新授权表
flush-threads # 刷新线程池
flush-status # 重置状态变量的值
flush-logs # 二进制日志、中继日志的滚动
flush-hosts # 清除主机的内部信息.
kill # 杀死mysql线程
refresh # 相当于同时执行flush-hosts和flush-logs
shutdown # 关闭mysql服务器
version # 显示mysql服务器版本及状态信息
start-slave # 启动从服务器的线程
stop-slave # 停止从服务器的线程

配置vsftpd虚拟用户,使用本地db库作为认证来源

1、安装相关软件包
yum -y install db4-utils2、创建虚拟用户映射的本地用户
useradd -d /ftp -s /sbin/nologin vuser
chmod o=rwx /ftp3、修改vsftpd的主配置文件,
#vim /etc/vsftpd/vsftpd.conf 内容如下
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YESpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=yes #启用用户映射功能
guest_username=vuser #虚拟用户映射的系统用户
user_config_dir=/etc/vsftpd/vuser_conf #虚拟用户的权限目录4、修改PAM认证
#vim /etc/pam.d/vsftpd #注释或删除文件里的内容,内容如下
auth required pam_userdb.so db=/etc/vsftpd/ftpuser
account required pam_userdb.so db=/etc/vsftpd/ftpuser5、建立虚拟用户的用户名密码文件
vim /etc/vsftpd/user.txt #内容如下
test #用户名
1111 #test的密码
tech #用户名
2222 #tech的密码
6,生成虚拟用户的db库文件
#db_load -T -t hash -f /etc/vsftpd/user.txt /etc/vsftpd/ftpuser.db
#chmod 600 /etc/vsftpd/ftpuser.db
7、给虚拟用户配置访问权限
给test用户配置权限
#vim /etc/vsftpd/vuser_conf/test 内容如下
local_root=/ftp #设置ftp用户的根目录
anon_upload_enable=yes #可以上传文件
anon_mkdir_write_enable=yes #可以创建目录及写入权限
anon_other_write_enable=yes #用户有其他的权限(如对文件改名覆盖及删除给tech用户设置权限
#vim /etc/vsftpd/vuser_conf/tech 内容如下
local_root=/ftp #设置根目录
anon_upload_enable=yes #可以上传文件
anon_mkdir_write_enable=yes #可以创建目录及写入权限
anon_other_write_enable=yes #用户有其他的权限(如对文件改名覆盖及删除
8,重启vsftpd服务
#service vsftpd restart
配置方法:
1,编辑/etc/bashrc文件
vim /etc/bashrc
``# 在此文件的最后一行加入如下内容
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[hostname- $(hostname)]": "[euid=$(whoami)]":$(who am i):[`pwd`]:"$msg"; }'
# 保存退出2,重新加载下bashrc
source /etc/bashrc3,查看配置结果
# 在执行如下指令之前,可以随意执行几个命令,以便显示效果
tail -f /var/log/messages## 私有Registry--Harbor安装```handlebars
1,安装docker-compose
rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
yum install docker docker-compose -ysystemctl start docker
systemctl enable docker2,安装harbor申请ssl证书,在阿里云或腾讯云上申请免费的ssl证书并上传到服务器放置/data/harbor/ssl_cert目录下mkdir /data/harbor/ssl_cert -pv
ls /data/harbor/ssl_cert/
reg.xxxxx.com.crt reg.xxxxx.com.key在线安装下载在线安装包
https://github.com/goharbor/harbor/releases
在上述链接中下载对应的版本,这里使用的是1.5.2版本的,可自行下载最新版的
wget https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.5.2.tgz
tar xvf harbor-online-installer-v1.5.2.tgz
cd harbor
vim harbor.cfg
hostname = reg.xxxxx.com这里建议使用https协议,免费的ssl证书在阿里云上很容易就申请到了,因为不用https协议docker那边需要修改配置如果是一两台docker修改倒也无所谓,多的时候就很麻烦了ui_url_protocol = https
customize_crt = off
ssl_cert = /data/harbor/ssl_cert/reg.xxxxx.com.crt
ssl_cert_key = /data/harbor/ssl_cert/reg.xxxxx.com.key其他的参数根据需要修改end需要注意的是docker-compose必须要安装,及本机上不能监听80,443端口修改所有存储数据目录为/data/harbor,默认harbor所属的组件的数据均存储在/data目录下,很不方便,如果本机部署有其他服务的数据也存储在/data目录的话 管理会很不方便docker-compose.yml prepare docker-compose.chartmuseum.yml分别打开上述文件搜索data关键字,在每一个/data替换为/data/harbor执行安装脚本./install.sh直到出现以下信息则表示安装成功----Harbor has been installed and started successfully.----Now you should be able to visit the admin portal at https://reg.xxxxx.com.
For more details, please visit https://github.com/vmware/harbor .测试浏览器打开https://reg.xxxxx.com
默认用户密码为 admin/Harbor12345命令行登录 registrydocker login reg.xxxxx.com

基于已有的容器制作镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a, --author 作者信息
-m, --message 提交信息,备注
-c, --change 改变dockerfile 中的指令
-p, --pause 制作镜像时暂停某容器docker commit -a "Andy_f" -p -m "test image" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' 源容器名 目标仓库:标签制作一个nginx的镜像
1,下载一个CentOS的镜像,基于CentOS
docker image pull centos:centos6
2,启动centos6容器
docker run --name t1 -it --rm centos:centos6 /bin/bash
3,定制容器,根据自己需要安装或做相应的设置
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install nginx -y
vi /etc/nginx/nginx.conf
daemon off;4,基于当前容器的状态生成新的镜像docker commit -a "Andy_f" -p -m 'test image' -c 'CMD ["/usr/sbin/nginx","-c","/etc/nginx/nginx.conf"]' t1 test:nginx15,测试制作的镜像
docker run --name t2 --rm test:nginx1

tomcat会话保持

1、安装memcached服务并启动

yum -y install memcached
service memcached start2在两个tomcat上的某host上定义一个用于测试的context容器,并在其中创建一个会话管理器,如下所示:
<Context path="/test" docBase="/usr/local/tomcat/webapps/test" reloadable="true">
<Manager lsclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.17.250.113:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
</Context>

安装Memcached服务器

1、安装libeventLibevent是一款跨平台的事件处理接口的封装,可以兼容多个操作系统的事件访问。 Memcached的安装依赖于Libevent,因此需要先完成Libevent的安装。yum install gcc gcc-c++ make -y #yum安装gcc编译环境包
解压软件包
tar xvf libevent-2.1.8-stable.tar.gz
tar xvf memcached-1.5.6.tar.gz
cd libevent-2.1.8-stable/
./configure --prefix=/usr/local/libevent
make && make install
到此libevent安装完毕2、安装Memcached安装配置时需指定libevent的安装路径cd ../memcached-1.5.6/
./configure \
--prefix=/usr/local/memcached \
--with-libevent=/usr/local/libevent/ #指定libevent安装路径
make && make install优化memcached服务创建软连接,方便使用memcached服务命令
ln -s /usr/local/memcached/bin/* /usr/local/bin/启动服务
启动 memcached(-d:守护进程、-m:指定缓存大小为32M 、-p:指定默认端口11211 、 -u:指定 登陆用户为 root)memcached -d -m 32m -p 11211 -u root
netstat -antp | grep memcached #查看启动监听端口

tomcat安装

[root@localhost tomcat]# ls -l
total 75676
-rw-r--r--. 1 root root 8850470 Aug 12 02:08 apache-tomcat-7.0.63.tar.gz
-rw-r--r--. 1 root root 68637258 Apr 6 2014 jdk-6u45-linux-i586-rpm.bin
[root@localhost tomcat]# chmod +x jdk-6u45-linux-i586-rpm.bin
[root@localhost tomcat]# ./jdk-6u45-linux-i586-rpm.bin
[root@localhost tomcat]# tar xf apache-tomcat-7.0.63.tar.gz -C /usr/local/
[root@localhost tomcat]# ln -s /usr/local/apache-tomcat-7.0.63/ /usr/local/tomcat
[root@node1 tomcat]# vim /etc/profile.d/java.sh #设置java环境变量
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
[root@node1 conf]# . /etc/profile.d/tomcat.sh
[root@node1 tomcat]# vim /etc/profile.d/tomcat.sh #设置tomcat环境变量
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
[root@node1 conf]# catalina.sh version
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.6.0_45
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.63
Server built: Jun 30 2015 08:08:33 UTC
Server number: 7.0.63.0
OS Name: Linux
OS Version: 2.6.32-504.el6.i686
Architecture: i386
JVM Version: 1.6.0_45-b06
JVM Vendor: Sun Microsystems Inc.
[root@localhost tomcat]# vim /etc/init.d/tomcat #提供启动脚本
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m'
JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
case $1 in
start)
exec $CATALINA_HOME/bin/catalina.sh start ;;
stop)
exec $CATALINA_HOME/bin/catalina.sh stop;;
restart)
$CATALINA_HOME/bin/catalina.sh stop
sleep 2
exec $CATALINA_HOME/bin/catalina.sh start ;;
configtest)
exec $CATALINA_HOME/bin/catalina.sh configtest ;;
*)
exec $CATALINA_HOME/bin/catalina.sh * ;;
esac
[root@localhost tomcat]# chmod +x /etc/init.d/tomcat
[root@localhost tomcat]# chkconfig --add tomcat
[root@node1 tomcat]# catalina.sh start
[root@node1 tomcat]# jps #显示Bootstrap启动则表示启动成功
29145 Bootstrap
29163 Jps

tomcat常用组件

各常见组件:

1、服务器(server):Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例;因此,一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。这是一个顶级组件。

2、服务(service):一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器。给服务命名可以方便管理员在日志文件中识别不同服务产生的日志。一个server可以包含多个service组件,但通常情下只为一个service指派一个server。

连接器类组件:

3、连接器(connectors):负责连接客户端(可以是浏览器或Web服务器)请求至Servlet容器内的Web应用程序,通常指的是接收客户发来请求的位置及服务器端分配的端口。默认端口通常是HTTP协议的8080,管理员也可以根据自己的需要改变此端口。一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。同时,Tomcat也支持AJP、JServ和JK2连接器。

容器类组件:

4、引擎(Engine):引擎通是指处理请求的Servlet引擎组件,即Catalina Servlet引擎,它检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端。严格意义上来说,容器不必非得通过引擎来实现,它也可以是只是一个容器。如果Tomcat被配置成为独立服务器,默认引擎就是已经定义好的引擎。而如果Tomcat被配置为Apache Web服务器的提供Servlet功能的后端,默认引擎将被忽略,因为Web服务器自身就能确定将用户请求发往何处。一个引擎可以包含多个host组件。

5、主机(Host):主机组件类似于Apache中的虚拟主机,但在Tomcat中只支持基于FQDN的“虚拟主机”。一个引擎至少要包含一个主机组件。

6、上下文(Context):Context组件是最内层次的组件,它表示Web应用程序本身。配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。Context组件也可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。

被嵌套类(nested)组件:

这类组件通常包含于容器类组件中以提供具有管理功能的服务,它们不能包含其它组件,但有些却可以由不同层次的容器各自配置。

7、阀门(Valve):用来拦截请求并在将其转至目标之前进行某种处理操作,类似于Servlet规范中定义的过滤器。Valve可以定义在任何容器类的组件中。Valve常被用来记录客户端请求、客户端IP地址和服务器等信息,这种处理技术通常被称作请求转储(request dumping)。请求转储valve记录请求客户端请求数据包中的HTTP首部信息和cookie信息文件中,响应转储valve则记录响应数据包首部信息和cookie信息至文件中。

8、日志记录器(Logger):用于记录组件内部的状态信息,可被用于除Context之外的任何容器中。日志记录的功能可被继承,因此,一个引擎级别的Logger将会记录引擎内部所有组件相关的信息,除非某内部组件定义了自己的Logger组件。

9、领域(Realm):用于用户的认证和授权;在配置一个应用程序时,管理员可以为每个资源或资源组定义角色及权限,而这些访问控制功能的生效需要通过Realm来实现。Realm的认证可以基于文本文件、数据库表、LDAP服务等来实现。Realm的效用会遍及整个引擎或顶级容器,因此,一个容器内的所有应用程序将共享用户资源。同时,Realm可以被其所在组件的子组件继承,也可以被子组件中定义的Realm所覆盖。

引擎(Engine):引擎是指处理请求的Servlet引擎组件,即Catalina Servlet引擎,它从HTTPconnector接收请求并响应请求。它检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端。严格意义上来说,容器不必非得通过引擎来实现,它也可以是只是一个容器。如果Tomcat被配置成为独立服务器,默认引擎就是已经定义好的引擎。而如果Tomcat被配置为Apache Web服务器的提供Servlet功能的后端,默认引擎将被忽略,因为Web服务器自身就能确定将用户请求发往何处。一个引擎可以包含多个host组件。

keepalived配置文件详解

! Configuration File for keepalivedglobal_defs {notification_email {root@xxxx.cn
xxxxx@qq.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}vrrp_instance HA_1 {state BACKUP #master和slave都配置为BACKUP
interface eth0 #指定HA检测的网络接口
virtual_router_id 80 #虚拟路由标识,主备相同
priority 100 #定义优先级,slave设置90
advert_int 1 #设定master和slave之间同步检查的时间间隔
nopreempt #不抢占模式。只在优先级高的机器上设置即可
authentication {auth_type PASS
auth_pass 1111
}virtual_ipaddress { #设置虚拟IP,可以设置多个,每行一个
192.168.1.208/24 dev eth0 #MySQL对外服务的IP,即VIP
}
}virtual_server 192.168.1.208 3306 {delay_loop 2 #每隔2秒查询real server状态
lb_algo wrr #lvs 算法
lb_kinf DR #LVS模式(Direct Route)
persistence_timeout 50
protocol TCPreal_server 192.168.1.210 3306 { #监听本机的IP
weight 1
notify_down /usr/local/keepalived/bin/mysql.sh
TCP_CHECK {connect_timeout 10 #10秒无响应超时
bingto 192.168.1.208
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}}

lvsDR工作流程:

DR模型,当RIP,DIP,VIP全部为公网地址时:1)客户端对VIP发送请求。2)Director接收请求,发现是请求后端的集群服务,然后对后端集群RIP发起ARP请求。3)Director得到后方RS的MAC地址后,选择一个把请求通过MAC地址发送给后端服务器。4)RS接收到请求后,进行响应,使用隐藏的VIP进行封装报文,但使用RIP所在网卡进行向外发送。5)RS发出的响应报文由于是使用VIP隐藏网卡封装,因此源IP为VIP,目标IP为CIP,所以报文直接发往互联网路由器,到达客户端。

DR模型,当RIP,DIP,VIP全部为私有地址时:

1)客户端对VIP发送请求。2)Director接收请求,发现是请求后端集群服务,然后对后端集群RIP发起ARP请求。3)Director得到后方RS的MAC地址后,现在一个把请求通过MAC地址发送给后端服务器。4)RS接收到请求后,进行响应,使用隐藏的VIP网卡进行封装报文,但使用RIP所在网卡进行向外发送。5)RS发出的响应报文由于是使用VIP隐藏网卡封装,因此源IP为VIP,目标IP为CIP。6)由于RS的通信RIP地址为私有地址,因此网关需要指向并发往转发服务器同网段地址网卡。7)转发服务器将响应报文发往互联网,最终到达客户端。

基于已有的容器制作镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a, --author 作者信息
-m, --message 提交信息,备注
-c, --change 改变dockerfile 中的指令
-p, --pause 制作镜像时暂停某容器docker commit -a "Andy_f" -p -m "test image" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' 源容器名 目标仓库:标签制作一个nginx的镜像
1,下载一个CentOS的镜像,基于CentOS
docker image pull centos:centos6
2,启动centos6容器
docker run --name t1 -it --rm centos:centos6 /bin/bash
3,定制容器,根据自己需要安装或做相应的设置
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install nginx -y
vi /etc/nginx/nginx.conf
daemon off;4,基于当前容器的状态生成新的镜像docker commit -a "Andy_f" -p -m 'test image' -c 'CMD ["/usr/sbin/nginx","-c","/etc/nginx/nginx.conf"]' t1 test:nginx15,测试制作的镜像
docker run --name t2 --rm test:nginx1

私有Registry–Harbor安装
1,安装docker-compose
rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
yum install docker docker-compose -y

systemctl start docker
systemctl enable docker

2,安装harbor

申请ssl证书,在阿里云或腾讯云上申请免费的ssl证书并上传到服务器

放置/data/harbor/ssl_cert目录下

mkdir /data/harbor/ssl_cert -pv
ls /data/harbor/ssl_cert/
reg.xxxxx.com.crt reg.xxxxx.com.key

在线安装

下载在线安装包
https://github.com/goharbor/harbor/releases
在上述链接中下载对应的版本,这里使用的是1.5.2版本的,可自行下载最新版的
wget https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.5.2.tgz
tar xvf harbor-online-installer-v1.5.2.tgz
cd harbor
vim harbor.cfg
hostname = reg.xxxxx.com

这里建议使用https协议,免费的ssl证书在阿里云上很容易就申请到了,因为不用https协议docker那边需要修改配置如果是一两台docker修改倒也无所谓,多的时候就很麻烦了

ui_url_protocol = https
customize_crt = off
ssl_cert = /data/harbor/ssl_cert/reg.xxxxx.com.crt
ssl_cert_key = /data/harbor/ssl_cert/reg.xxxxx.com.key

其他的参数根据需要修改

end

需要注意的是docker-compose必须要安装,及本机上不能监听80,443端口

修改所有存储数据目录为/data/harbor,默认harbor所属的组件的数据均存储在/data目录下,很不方便,如果本机部署有其他服务的数据也存储在/data目录的话 管理会很不方便

docker-compose.yml prepare docker-compose.chartmuseum.yml

分别打开上述文件搜索data关键字,在每一个/data替换为/data/harbor

执行安装脚本

./install.sh

直到出现以下信息则表示安装成功

----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at https://reg.xxxxx.com.
For more details, please visit https://github.com/vmware/harbor .

测试

浏览器打开https://reg.xxxxx.com
默认用户密码为 admin/Harbor12345

命令行登录 registry

docker login reg.xxxxx.com
更多小技巧及工作岗位推荐请移步 http://ke.magedu.com

今日小技巧:
MySQL 慢查询的相关参数解释:

slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。

log-slow-queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log

slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log

long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。

log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。

log_output:日志存储方式。log_output=‘FILE’表示将日志存入文件,默认值是’FILE’。log_output='TABLE’表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output=‘FILE,TABLE’。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。

今日小技巧:
mysql主从同步原理
mysql主从复制需要三个线程,master(binlog dump thread)、slave(I/O thread 、SQL thread)。

master

(1)binlog dump线程:当主库中有数据更新时,那么主库就会根据按照设置的binlog格式,将此次更新的事件类型写入到主库的binlog文件中,此时主库会创建log dump线程通知slave有数据更新,当I/O线程请求日志内容时,会将此时的binlog名称和当前更新的位置同时传给slave的I/O线程。

slave

(2)I/O线程:该线程会连接到master,向log dump线程请求一份指定binlog文件位置的副本,并将请求回来的binlog存到本地的relay log中,relay log和binlog日志一样也是记录了数据更新的事件,它也是按照递增后缀名的方式,产生多个relay log( host_name-relay-bin.000001)文件,slave会使用一个index文件( host_name-relay-bin.index)来追踪当前正在使用的relay log文件。

(3)SQL线程:该线程检测到relay log有更新后,会读取并在本地做redo操作,将发生在主库的事件在本地重新执行一遍,来保证主从数据同步。此外,如果一个relay log文件中的全部事件都执行完毕,那么SQL线程会自动将该relay log 文件删除掉。

Liunx一些简单的小命令2相关推荐

  1. ubuntu简单的小命令

    1. gnome-system-monitor,用作調处系统管理窗口,方便结束相关程序. 2. sudo python setup.py install,用作对.py文件的安装,但注意要先cd /ho ...

  2. linux rm 不释放_【Linux简单实用小命令002】rm -rf,删了文件空间却没释放?教你解锁4种姿势!...

    00 前言 运维同学发现一台CentOS 7的服务器空间快满了,服务器告警. 于是要清除掉服务器上没用的大文件x.log,但是当使用了rm -rf 删除服务下的大log文件,却发现还是告警,可用空间沒 ...

  3. python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...

    每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...

  4. 基于vue-cli、elementUI的Vue超简单入门小例子

    基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...

  5. 关于Linux的基础中的基础和一些基础小命令

    每周分享 1 硬盘分区挂载及命令别名   一般来说,硬盘分区有两种类型:一种是GPT,但是只支持总分区,现在很多家庭电脑Windows系统都是用这种分区类型:还有一种就是主流的MBR,主分区单块硬盘上 ...

  6. 检查电脑是否被安装木马三个小命令

    检查电脑是否被安装木马三个小命令 一些基本的命令往往可以在保护网络安全上起到很大的作用,下面几条命令的作用就非常突出. 一.检测网络连接 如果你怀疑自己的计算机上被别人安装了木马,或者是中了病毒,但是 ...

  7. 检查电脑是否被安装***三个小命令

    检查电脑是否被安装***三个小命令 责任编辑:水土不服 更新日期:2007-6-6 一些基本的命令往往可以在保护网络安全上起到很大的作用,下面几条命令的作用就非常突出. 一.检测网络连接 如果你怀疑自 ...

  8. git 9个小命令(三年修仙五年摸鱼也有喔) 一条龙服务

    前言 本文是记录今天学习过的git命令哈,感觉还是很有趣,就是感觉很高级哈,git命令是一种管理代码的命令,今天学的呢就是一些版本号管理这种的,比如说一个PS图片,产品的外观设计,就拿今天讲的拿公司的 ...

  9. Linux下提权常用小命令

    有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...

最新文章

  1. 我的世界服务器物品绑定插件,我的世界灵魂绑定插件详解
  2. java 监控usb端口插拔_如何监控某种类型的USB设备的插拔?
  3. 音视频技术的高光时刻: LiveVideoStackCon 2019上海 音视频技术大会
  4. XSS介绍_靶场DVWA,pikachu;其他XSS平台
  5. new file会创建文件吗_Rust 文件系统处理之文件读写 Rust 实践指南
  6. 值不值得入手_比3系更运动!标配2.0T+后驱,凯迪拉克CT5值不值得入手
  7. 软件工程学习进度第八周暨暑期学习进度之第八周汇总
  8. python函数中的关键字参数
  9. 计算机软驱的连接方式,岛精仿真软驱、斯托尔USB软驱、斯坦格电脑横机软盘改U盘...
  10. vue3使用echarts
  11. Filter 敏感词汇过滤案例
  12. 敢问程序员路在何方、路在脚下。
  13. android刷脸支付宝,安卓手机可以支付宝刷脸吗 刷脸登陆安卓机能用吗
  14. html表格数据按公式自动计算,Word表格怎么自动填充和计算数据
  15. python计算md5码
  16. 小甲鱼零基础学python笔记 P20 python变量简单了解
  17. python win10 捕获 弹出窗口_[python爬虫] Selenium高级篇之窗口移动、弹出对话框自登录...
  18. 小博老师解析Java核心技术点 ——表单令牌(一)
  19. mysql字段中有问号_Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法...
  20. python实现线性回归之梯度下降法,梯度下降详解

热门文章

  1. redis 不同数据结构使用场景
  2. JAVA:实现买入和卖出股票的最佳时机算法(附完整源码)
  3. echarts双Y轴(简单明了)
  4. Oracle SaaS精准营销,Eloqua 结合微信的最佳实践
  5. 计算机毕业设计(附源码)python在线学习交流平台
  6. [温习]jqgrid 前后端交互实例
  7. 破、立、行,网贷雷潮背后的消亡与新生 | 一点财经
  8. HT全矢量化的图形组件设计
  9. 【关于js数组对象一道题】将数组对象中的英文属性名替换为中文属性名
  10. Java 百度、高德、84坐标系经纬度的相互转换