网络抓包与分析方法的学习记录

掌握一些网络抓包和数据包分析的方法对于解决生产环境下遇到的疑难问题有很大帮助。 使用tcpdump命令加Wireshark工具 大多数线上服务都是部署在linux环境下,所以通常用tcpdump命令来截获网络数据包,然后拿到桌面环境(如windows)下用Wireshark解析数据包。Wireshark本身既可以捕获网络数据包,也可以解析一些常见通信协议和格式的数据。 场景一:HTTP协议数据包 首先实现了一个简易的HTTP服务端,监听端口9101。在服务端使用以下命令捕获数据包,输出到文件http.pcap,直到Ctrl+C终止, 使用curl命令发起HTTP请求, 将得到的http.pcap文件下载到windows环境下用Wireshark打开,如下图 如果没有对数据包内容进行过滤,则可以看到除了要关注的HTTP协议数

Mongodb跨数据中心部署实践

公司某休闲游戏的海外应用服务器和Mongodb数据库服务器都部署在了AWS美国东部某数据中心。最近为了降低欧洲用户的访问延迟,打算尝试使用Mongodb的zone sharding特性实现数据跨欧洲、北美两个数据中心,并在欧洲再部署一套应用服务器直连欧洲的数据库服务器。再通过AWS的Route 53(域名系统)的地理策略,依据其ip位置将用户分流到欧洲、北美两个入口,从而实现用户就近访问后端服务器,本地读写数据。 动手前先从架构和业务两方面思考有哪些需要解决的问题,尽可能避免一些弯路,做好充分的准备。 问题及解决方案 选择跨数据中心的网络连接方式 这里需要考虑安全和稳定两方面因素。分别调研了以下三种方式: VPC Peering Connections(对等连接),这个适用于同一数据中心里跨账户或跨VPC间的子网互连,目前

虚拟机 – VirtualBox使用方法记录

VirtualBox是一款免费使用的虚拟机软件,通过安装不同操作系统的iso文件,可以获得多种不同的操作系统环境。不仅可以帮助使用者体验和学习各类操作系统,还可以实现在一台电脑上同时运行多个虚拟机,组成集群环境。软件下载地址在这里。 虚拟机的创建和配置 设置基本的虚拟机信息,包括名称、系统、内存、CPU、显示、存储、网络等。 操作系统的安装和运行 Mac OS 在虚拟机的DeviceKey中加入Apple的声明: 调整分辨率: 安装过程中用 “实用工具” -> “磁盘工具” 打开分区管理界面对刚开始创建的虚拟硬盘进行分区: Cent OS 设置NAT,使虚拟机通过主机访问外网: 设置主机和虚拟机之间的网络,使主机可以SSH到虚拟机:

域名系统 – 使用BIND搭建主备DNS服务

DNS(Domain Name System)域名系统提供域名与IP相互映射关系的服务,方便通过域名访问主机。BIND(Berkeley Internet Name Daemon)是一款DNS服务器软件。 安装 CentOS: Ubuntu: 配置 如果想实现name1.abc.com -> 172.31.32.100,name2.abc.com -> 172.31.32.101这样的域名IP映射,需要两步:一,在核心配置文件named.conf中增加域abc.com;二,在这个域对应的配置文件中增加name1、name2与IP的映射关系。除了这样的域名到IP的正向解析外,还可以实现IP到域名的反向解析。 修改配置文件后需要重启服务生效,相关命令如下: 核心配置文件named.conf named.conf在centos中

NFS使用方法记录

介绍 NFS(Network File System)是一种依赖RPC协议的分布式文件系统,通常用于共享网络中主机上的文件,使程序操作这些文件时看起来就像操作本地文件一样。例如,想要让主机A看到主机B上的某个目录,需要在B上运行nfs server共享该目录,然后A上通过挂载的方式将B上的目录挂到本地目录上,这样A从本地目录中便可以看到B上该目录中的内容。 服务端 安装nfs程序,配置文件见/etc/sysconfig/nfs。 在/etc/exports文件中添加需要共享的目录,并配置权限。 运行nfs相关进程。 查看端口信息,并开放相关端口的访问权限。 客户端 安装nfs程序。 临时挂载到本地目录。 开机自动挂载到本地目录。 挂载成功后通过df -h查看本地目录可以看到。

NTP使用方法记录

介绍 NTP(Network Time Protocol)是计算机系统之间进行时钟同步的网络协议。通常用于集群环境中的各个节点保持一致的时间。例如,在一个局域网环境中,选择一台主机作为提供时间源的ntp server,在其上运行ntpd进程,其他主机定时调用ntpdate与ntp server进行时间同步。也可以所有节点都运行ntpd进程与上层ntp server进行同步。 NTP服务器 安装与运行相关命令: ntpd默认使用UDP 123端口,使用ntpdate从ntp server同步时间时需要开放ntp server的123端口。 ntpd的配置文件是/etc/ntp.conf,内容如下: NTP客户端 需要同步时间的ntp客户端可以通过在crontab里增加ntpdate来实现时间定时同步。

Squid安装与实践

介绍 Squid是可以提供缓存功能的HTTP代理服务器软件,同时也可以过滤流量,帮助网络安全。通常用于转发tcp或其他网络请求,例如,在一个局域网环境中,通过一台能够访问公网的主机上的Squid代理服务器,使那些不能直接访问公网地址的主机访问公网。 安装与运行 如果启动失败查看/var/log/squid/squid.out中的详细日志。如果原因是Permission denied,除了排查相关目录所属及权限,还要注意是否开启selinux及相应控制策略。通常为了避免麻烦可以直接关闭selinux,修改 /etc/selinux/config 文件,将SELINUX设置为disabled,重启生效。为了不重启可以再执行下临时关闭命令 setenforce 0 。 配置 配置文件是 /etc/squid/squid.conf

Postgres XL运行在Docker容器中

这次实践是在Postgres XL实践基础上进一步尝试结合docker使用,主要目的是为了简化节点环境配置和Postgres XL版本升级过程。 目标是启动一批由相同镜像创建的容器,支持SSH访问,然后通过pgxl_ctl脚本管理Postgres-XL集群。 Docker镜像构建 首先对文件和目录进行划分,分为docker镜像部分和非docker镜像部分。 镜像部分 编译后的Postgres-XL二进制文件。 Postgres-XL运行时依赖的lib、系统参数和常用工具。 用户和SSH权限配置,使容器彼此通过postgres用户免密码访问。 .pgpass文件的软链接。因为尝试指定该文件路径的方式没成功,所以改为软链接的方式。 非镜像部分 配置和数据文件。 日志文件。 pgpass.conf文件。 其中镜像部分写入Dock

在云主机中安装运行boot2docker

背景 在某云上购买云服务器,初始安装的操作系统是Ubuntu14.04(没有boot2docker镜像,甚至没有Ubuntu16)。从官方下载boot2docker.iso或boot2docker-experimental.iso文件,目标是把它安装到云服务器中,并在某云的vnc控制台重启系统时选择boot2docker系统。 过程 准备镜像文件 首先把boot2docker.iso文件放到某个目录下,例如/boot/iso目录,然后将其挂载到另一个自定义的路径下,之后便能在该路径下查看和复制镜像中的文件。也可以通过解压iso文件的方式查看。 然后复制initrd.img文件和vmlinuz64文件到/boot目录下。 配置boot2docker系统启动项菜单 查看/boot目录可以看到主机的操作系统是通过grub引导加载

Docker学习记录

Docker是轻量级的容器化技术,其优势是容器开销低、开发与运行环境一体化、易移植、易部署等。其实现思路是在宿主机系统中运行docker-engine环境,然后在这个环境里运行一个一个的容器。所谓容器包含了开发者应用或服务、运行参数和依赖环境。例如,一个java web应用常见的开发、测试、线上部署情况是这样,从头到尾传递的都是可在web容器中运行的web应用程序,甚至仅仅是一个jar包。其运行所依赖的参数和第三方程序是单独需要配置和安装的。这可能会造成开发、测试、线上的环境不一致或,并带来重复繁琐的工作量。引入docker后,交付的不再仅仅是web应用本身,而是包含web应用、web容器、jdk、操作系统等内容的docker容器,不同环境下只需支持docker就可以快速发布运行。 Docker容器可以被固化,构建成只读的