转自:http://blog.54im.com/2016/12/15/centos-install-kong-cassandra/#


前置阅读

对于一些传统的大型项目,传统的方式会有一些缺陷,比如说新人熟悉系统成本高(因为整个系统作为一个整体,彼此会有一定的牵连),项目重启时间长,重构困难(对于一个新技术的引入,可能需要对整个项目推到重来),不易于更换新的技术,并且整个项目会慢慢变成巨无霸。

近年来微服务受到越来越多国内企业的青睐。当企业现有系统的复杂度、维护和扩展成本成为业务发展瓶颈时,微服务可以帮助企业拆分、解耦现有的系统,从而提高系统的可维护和可扩展性。Airbnb、DropBox、Twitter等互联网公司,在使用微服务架构之后,功能发布周期减少了75%,微服务的核心在于根据业务和具体粒度划分API,那么如何管理API就显得尤为重要。

拿日常的电商购物举例,一个服务实现一个不同的特性或者功能。每一个独立的微服务都是一个小型应用。一些微服务可能会暴露一些api 给其他的一些微服务或者是客户。

购物车,商品详情,支付等模块分别提供单独的rest api接口,给上层访问。所有的请求前面有统一的入口,api网关负责路由,认证,性能分析等功能
当然,微服务也有一定的缺陷,比如说每个服务(每个应用) 如果都有一个数据库的话,那么如何维持数据库事务。再比如说,服务之间的调用可能会由于网络的原因变得不可达,那么代码中要额外增加请求失败的代码。运维维护成本升高,开发时需注意模块间耦合。

上面这个架构其实很容易看出,api网关很容易成为性能瓶颈,而且也存在单点。api层面耦合太高。

架构调整

引入Kong做api网关
微服务上层会有许多消费者(网站、移动端、甚至物联网设备),而这些消费者可能会依赖一些共同的基础服务,kong可以作为API网关提供一些插件来实现这些基础功能,比如登录,权限认证等。

Kong简介

Kong是Mashape开源的一款API网关,起初是用来管理 Mashape 公司15000个微服务的,后来在2015年开源,现在已经在很多创业公司、大型企业和政府机构中广泛使用。基于Lua和Cassandra或Postgresql,支持分布式操作,有很强的可移植性和可扩展性。可以在任何一种基础设施上运行,作为应用和API之间的中间层,加上众多功能强大的插件,可以实现认证授权、访问控制等功能。并且提供易于使用的RESTful API来操作和配置系统。

Kong可以说是API的得力助手。对需要从事API管理的广大开发员来说,它是最出色的工具之一。多年来,Kong一直在支持优秀的开发项目,比如Mashape(世界上规模最大的API市场)。最棒的是,Kong得到了强大的Nginx的支持。MaxCDN也将Mashape与其无限恶意软件扫描器(Infinite Malware Scanner)结合使用,用来检测其内容分发网络(CDN)上的恶意软件。

https://github.com/Mashape/kongstart 7k+

Kong的主要功能

  • Kong可灵活扩展:你可以通过增加更多Kong Server机器对Kong服务进行水平扩展,通过前置的负载均衡器向这些机器分发请求。这样就可以支持更多流量,同时确保网络延迟很短。根据文档描述,两个Cassandra节点就足以支撑绝大多数情况,但如果网络非常拥挤,可以考虑适当增加更多节点。

  • Kong可在任何地方运行:它可以部署在单个或多个数据中心环境的私有云或公有云上。它还支持大多数流行的操作系统,比如Linux、Mac和Windows。Kong包括许多实用技巧,以便针对大多数现代平台完成安装和配置工作。

  • Kong具有模块性:它可以与新的插件协同运行,扩展基本功能。可将你的API与许多不同的插件整合起来,这些插件在API请求响应循环的生命周期中被执行。插件使用Lua编写,而且Kong还有如下几个基础功能:HTTP基本认证、密钥认证、CORS( Cross-origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。以增强安全、分析、验证、日志及/或监测机制。最好的例子之一就是Nginx Plus插件(https://getkong.org/plugins/nginx-plus-monitoring/),该插件提供了服务器实时监测机制,以获得关于负载和请求的度量指标和统计数字。

请求工作流

为了更好地理解系统,这是使用Kong的API的典型请求工作流:
Kong提供认证,限流,负载均衡等功能

哪些企业在用KONG

  • Mashapoe Marketplace
  • Buzzlogix
  • Gengo
  • IBM
  • Intel
  • OpenDNS
  • 饿了么

它是如何工作的?

Kong可与两种不同的组件协同工作:

  • Nginx:Kong使用经过修改的Nginx web服务器作为代理服务器,该服务器负责处理API请求。
  • Apache Cassandra或者Postgresql:这用作数据存储(Datastore)服务器,负载存储来自Kong操作的数据。

    Kong 当前最大支持 Postgresql 9.4+ 版本和 Cassandra 2.2.x 版本2个数据库

Kong VS 其他API网关

  • 开源:没有黑盒。 对于企业或免费使用,Kong是完全开源的。
  • 基于Nginx:Kong嵌入在Nginx并受益于其令人惊叹的代理性能。
  • 可定制:编写插件以涵盖您的所有架构用例。
  • 数据所有权:Kong及其基础数据存储在您的服务器上运行。
  • 容易扩展:所有孔节点是无状态的。 在你的集群中产生新的节点是很容易的。
  • 集成:许多插件与微服务世界中的流行的第三方服务集成。

kong性能数据

官方在AWS上进行性能测试, Kong运行在三个m3.medium EC2实例上; 一个用于部署Kong Server,一个用于Cassandra做数据存储,另一个用于上游API。 在将上游API的upstream_url添加到Kong中之后,我们测试从1到2000个并发连接的测试。

两分钟以上的117,185个请求,平均延迟为10ms,每秒976个请求,或者每天约84,373,200个请求通过Kong返回,只有一个超时。
Kong使用方式

  • 一种应用通过携带Host头部来增加API应用。
  • 另一种是通过不同的uri来提供API应用。

两种方式对OpenResty或者Nginx的使用方式都是基于动态增加upstream以及对upstream的DNS resolver来实现。

Kong部署

当前使用最新版本kong 0.9,我们部署在Centos 6.5 x64位系统上

 
      
$ wget https://bintray.com/mashape/kong-rpm-el6-0.9.x/rpm -O bintray-mashape-kong-rpm-el6-0.9.x.repo
$ mv bintray-mashape-kong-rpm-el6-0.9.x.repo /etc/yum.repos.d/
$ yum install kong

启动kong

 
      
$ kong start -c <path_to_config>

检查kong是不是正常启动了,默认不修改配置文件的情况下会报连接不上Postgresql,这里先忽略,继续装cassandra

正常启动的话会输出:[OK] Started

kong的监听端口:

 
      
8000: API请求的代理层。
8001: restful的配置管理API。
8443: 代理HTTPS
7946: 用于和其他Kong节点通讯,支持TCP/UDP流量
7373: 用于本地集群代理通讯

停止kong

 
      
$ kong stop

重新加载kong

 
      
$ kong reload

cassandra部署

java环境部署

这里就不演示安装了,yum也行,绿色版解压也行。java1.7 或者1.8都可以,注意cassandra3.0必须要jdk1.8版本才行。这里我们由于kong的支持版本是2.x,这里介绍2.x的安装。

yum源添加

 
      
$ vim /etc/yum.repos.d/datastax.repo
[datastax]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0
$ yum search dsc
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
========================================================= N/S Matched: dsc ==========================================================
dsc1.1.noarch : Meta RPM for installation of the DataStax DSC platform
dsc12.noarch : Meta RPM for installation of the DataStax DSC platform
dsc20.noarch : Meta RPM for installation of the DataStax DSC platform
dsc21.noarch : Meta RPM for installation of the DataStax DSC platform
dsc22.noarch : Meta RPM for installation of the DataStax DSC platform
dsc30.noarch : Meta RPM for installation of the DataStax DSC platform
虽然有3.0,但是目前kong只支持2.2.x,这里我就安装2.2版本
$ yum install dsc22

启动cassandra

 
      
$ /etc/init.d/cassandra start
Starting Cassandra: OK

python2.7部署

cqlsh是cassandra的客户端查询工具
cqlsh客户的工具需要python2.7支持,centos6.x默认是python2.6版本,这里我新安装下python2.7

首先安装 python 工具需要的额外软件包 SSL,bz2,zlib

 
      
yum install -y zlib-devel bzip2-devel openssl-devel xz-libs wget

源码安装Python 2.7.x,当然你也可以偷懒yum安装,添加相应的yum就可以

 
      
$ wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz
$ xz -d Python-2.7.8.tar.xz
$ tar -xvf Python-2.7.8.tar
$ cd Python-2.7.8
$ ./configure --prefix=/usr/local
$ make
$ make altinstall

检查 Python 版本并修复yum

 
      
$ python2.7 -V
Python 2.7.8
$ mv /usr/bin/python /usr/bin/python2.6.6
$ ln -s /usr/local/bin/python2.7 /usr/bin/python
$ which yum
/usr/bin/yum
#修改 yum中的python
将第一行 #!/usr/bin/python 改为 #!/usr/bin/python2.6

安装pip

 
      
$curl https://bootstrap.pypa.io/get-pip.py | python2.7 -

验证cassadnra

执行cqlsh客户端验证cassadnra安装

 
      
$ cqlsh
Traceback (most recent call last):
File "/usr/bin/cqlsh.py",line 160,in <module>
from cqlshlib import cql3handling,cqlhandling,pylexotron,sslhandling
ImportError: No module named cqlshlib
$ pip install cqlshlib
$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.2.8 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh> create schema testschema
... with replication = {'class':'SimpleStrategy','replication_factor':1};
cqlsh> describe keyspaces;
system testschema system_traces
cqlsh> use testschema;
cqlsh:testschema> create table user (
... user_id varchar primary key,
... first varchar,
... last varchar,
... age int
... );
... user_id varchar primary key,
... age int
... );
cqlsh:testschema>
cqlsh:testschema> insert into user (user_id,first,last,age) values ('rfroncois','ronn','francois',20);
cqlsh:testschema> select * from user;
user_id | age | first | last
-----------+-----+-------+----------
rfroncois | 20 | ronn | francois
cqlsh:testschema>

Kong 配置

将数据库改为cassandra

 
      
$ cat /usr/local/kong/kong.conf
ssl_cert_key = /usr/local/kong/ssl/kong-default.key
ssl_cert_csr_default = /usr/local/kong/ssl/kong-default.csr
Nginx_acc_logs = /usr/local/kong/logs/access.log
Nginx_pid = /usr/local/kong/pids/Nginx.pid
Nginx_conf = /usr/local/kong/Nginx.conf
anonymous_reports = true
lua_code_cache = on
serf_path = serf
Nginx_kong_conf = /usr/local/kong/Nginx-kong.conf
Nginx_err_logs = /usr/local/kong/logs/error.log
log_level = notice
proxy_listen = 0.0.0.0:8000
ssl_cert = /usr/local/kong/ssl/kong-default.crt
cassandra_port = 9042
lua_ssl_verify_depth = 1
admin_listen = 0.0.0.0:8001
ssl_cert_key_default = /usr/local/kong/ssl/kong-default.key
ssl_cert_default = /usr/local/kong/ssl/kong-default.crt
serf_log = /usr/local/kong/logs/serf.log
dnsmasq_pid = /usr/local/kong/pids/dnsmasq.pid
proxy_listen_ssl = 0.0.0.0:8443
Nginx_worker_processes = auto
cassandra_contact_points = 127.0.0.1
proxy_ip = 0.0.0.0
cluster_profile = wan
pg_ssl = false
proxy_ssl_port = 8443
cassandra_timeout = 5000
pg_database = kong
lua_package_path = ?/init.lua;./kong/?.lua
cassandra_consistency = ONE
proxy_port = 8000
serf_node_id = /usr/local/kong/serf/serf.id
proxy_ssl_ip = 0.0.0.0
admin_ip = 0.0.0.0
kong_conf = /usr/local/kong/kong.conf
admin_port = 8001
prefix = /usr/local/kong
cluster_listen = 0.0.0.0:7946
cassandra_username = kong
pg_host = 127.0.0.1
pg_port = 5432
cluster_ttl_on_failure = 3600
dnsmasq_port = 8053
Nginx_daemon = on
serf_pid = /usr/local/kong/pids/serf.pid
cassandra_repl_strategy = SimpleStrategy
dnsmasq = true
Nginx_optimizations = true
pg_user = kong
pg_ssl_verify = false
cassandra_data_centers = dc1:2,dc2:3
cassandra_ssl_verify = false
ssl = true
database = cassandra
cassandra_repl_factor = 1
serf_event = /usr/local/kong/serf/serf_event.sh
cassandra_keyspace = kong
mem_cache_size = 128m
cassandra_ssl = false
cluster_listen_rpc = 127.0.0.1:7373

重启kong

 
      
$ kong restart

Kong使用

新增API

添加你的具体业务 API 服务到 Kong 中,Kong 通过 RESTful API 来管理具体的Kong 实例。具体请求如下,Kong 管理的 API 在8001 端口。请求配置如下:

 
      
$ curl -i -X POST \
--url http://localhost:8001/apis/ \
--data 'name=api-rest' \
--data 'upstream_url=http://api.yonghuivip.com/api/' \
--data 'request_host=api.yonghuivip.com'

当收到一个请求,Kong会检查它,并尝试将其路由到正确的API。 Kong支持2种路由机制

  • 请求的主机头中包含的DNS值。
  • 请求的路径(URI)。
 
      
$ curl -i -X POST \
--url http://localhost:8001/apis/ \
-d 'name=mockbin' \
-d 'upstream_url=http://api.yonghuivip/' \
-d 'request_host=api.yonghuivip' \
-d 'request_path=/status'
```
这里首先看下DNS方式

$ curl -i -X GET \
–urlhttp://localhost:8000/\
–header ‘Host: api.yonghuivip’

 
      
当从浏览器执行请求时,您可能无法设置主机头。 因此,Kong还会检查一个名为X-Host-Override的头的请求,并像Host头一样设置它:

http://localhost:8000/\
–header ‘X-Host-Override: api.yonghuivip.com’

 
      
URI方式

$ curl -i -X GET \
–urlhttp://localhost:8000/status/200

 
      
> 通过kong代理请求的url 是 KONG_URL:PROXY_PORT/status/200 (http://localhost:8000/status/200)
> 我们配置的upstream_url 是 http://api.54im.com/
> 那我们最后的实际请求地址为 http://api.54im.com/status/200.
使用"strip_request_path"属性
> 通过在API上启用strip_request_path属性,请求将被代理,而request_path属性不包含在上游请求中。 让我们通过向管理API发出请求来启用此选项:

$ curl -i -X PATCH \
–urlhttp://localhost:8001/apis/api\
-d ‘strip_request_path=true’ \
-d ‘request_path=/api’

 
      
可以看下使用strip_request_path后,请求路径的变化
request_path | strip_request_path | incoming request |upstream request
---|---|---|---
/api-rest| false | /some_path | not proxied
/api-rest | false | /api | /api
/api-rest | false | /api/some_path | /api/some_path
/api-rest | true | /some_path | not proxied
/api-rest | true | /api | /
/api-rest | true | /api/some_path | /some_path
我们这边就使用 Request URI方式测试
KONG 路由到业务的 API 使用: path URI 的方式请求 + 设置 strip_request_path 为 true
我现在拿这个api实验下
> http://api.54im.com/api/member/login?xxx=xxx&xxx=xxx
新增API

$ curl -i -X POST \
–urlhttp://localhost:8001/apis/\
-d ‘name=api’ \
-d ‘upstream_url=http://api.54im.com/‘ \
-d ‘request_host=api.54im.com’ \
-d ‘strip_request_path=true’ \
-d ‘request_path=/api’

 
      
返回

{
“upstream_url”: “http://api.54im.com/“,
“strip_request_path”: true,
“request_path”: “/api”,
“id”: “be9bb14d-f665-4d53-866c-1cd6e77bfc8b”,
“created_at”: 1476347080000,
“preserve_host”: false,
“name”: “api-rest”,
“request_host”: “api.54im.com”
}

 
      
我们来请求通过kong代理的业务的api

curl -i -X GET –url “http://localhost:8000/api/api/member/login?xxx=xxx&xxx=xxx“

 
      
> 这里说明下这个结构
>http://localhost:8000/api/api/member/login?
>http://localhost:8000/ 是kong提供的API代理层接口,提供给外界,当然你上层还是可以用负载均衡
>api 是上面新增接口中的 request_path
>api/member/login? 是我们业务具体的接口了
业务返回
```{
"code": 0,
"data": {
"xxx": "xxx",
"expires_in": "7200",
"refresh_token": "xxx",
"xxx": "xxx",
"uid": "21000"
},
"message": "OK",
"Now": 1476348465224
}

业务Nginx日志也可以看到该请求

 
      
10.10.1.2 - - [13/Oct/2016:16:33:10 +0800] "GET /api/member/login?v=2%2e0%2e1 HTTP/1.0" 500 184 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" 127.0.0.1 0.005 -

Kong 插件管理

官网目前有这几类插件

Authentication 认证插件

  • basic-authentication
  • Key Authentication
  • OAuth 2.0 Authentication
  • HMAC Authentication
  • JWT
  • LDAP Authentication

Security 安全插件

  • ACL
  • CORS
  • Dynamic SSL
  • IP Restriction
  • Bot Detection

Traffic Control 流控插件

  • Rate Limiting
  • Response Rate Limiting
  • Request Size Limiting

Analytics & Monitoring 分析监控插件

  • galileo
  • Datadog
  • Runscope

Transformations 转换插件

  • Request Transformer
  • Response Transformer
  • Correlation ID

Logging 日志插件

  • TCP
  • UDP
  • HTTP
  • File
  • Syslog
  • StatsD
  • Loggly

Key Authentication 演示

新增一个key-auth插件给api-rest这个api

 
      
[root@10-19-63-216:~]$ curl -i -X POST \
> --url http://localhost:8001/apis/api/plugins/ \
> --data 'name=key-auth'
HTTP/1.1 201 Created
Date: Thu,13 Oct 2016 09:01:55 GMT
Content-Type: application/json; charset=utf-8
transfer-encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.9.3

返回

 
      
{
"api_id": "be9bb14d-f665-4d53-866c-1cd6e77bfc8b",
"id": "9018a2c9-f532-4ea0-96aa-a7165181d8fe",
"created_at": 1476349315000,
"enabled": true,
"name": "key-auth",
"config": {
"key_names": [
"apikey"
],
"hide_credentials": false
}
}

我们同样请求之前那个接口看下

 
      
$ curl -i -X GET --url "http://localhost:8000/api/api/member/login?xxx=xxx&xxx=xxx"
HTTP/1.1 401 Unauthorized
Date: Thu,13 Oct 2016 09:03:17 GMT
Content-Type: application/json; charset=utf-8
transfer-encoding: chunked
Connection: keep-alive
WWW-Authenticate: Key realm="kong"
Server: kong/0.9.3
{"message":"No API key found in headers or querystring"}

那现在要认证了,我该如何访问接口呢,别急,继续往下

添加Consumers消费者

现在已经配置了 key-auth 插件,还需要添加 consumer 到 API,才能继续通过 Kong 代理请求。Consumer 在调用API时,与单个用户请求关联,能被用来跟踪、访问管理等等。

建立一个用户名称为Ivon 的 consumer,下面请求命令成功之后,Kong 还会为Jason 用户建立一个唯一的 custom_id。

 
      
$ curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=Jason"

{
"username": "Ivon",
"created_at": 1476349684000,
"id": "4d6b3281-d26e-416b-b8fc-8185422386d5"
}

为消费者Ivon提供密钥凭据

 
      
curl -i -X POST \
--url http://localhost:8001/consumers/Ivon/key-auth/ \
--data 'key=18b4ccb1a20076813c208d8e8a281a94'

如果不指定key参数,kong会为你生成一个,推荐不指定。

{
"key": "18b4ccb1a20076813c208d8e8a281a94",
"consumer_id": "4d6b3281-d26e-416b-b8fc-8185422386d5",
"created_at": 1476350157000,
"id": "9bd5165b-a798-4ff3-91d9-398216bbcb55"
}

centos-install-kong-cassandra的更多相关文章

  1. ios – 如何使对象ID具有人类可读性?

    故事板上的每个UIView都有一个唯一的对象ID,类似于:kvf-NI-koG我想知道有没有办法让这个更友好,例如’myLabel’?

  2. ios – 如何处理退款/取消应用内购买

    我正在尝试处理iOS的退款应用内购买.但我找不到明确的指导方针来做到这一点.所以我有一个会员类型的应用程序内购买功能,其中用户凭据不一定与itunes帐户绑定.当有人进行购买时,我可以参考哪种标识符,并且当他们通过苹果申请退款时具有相同的标识符?我需要立即取消会员资格.谢谢!解决方法我最终存储了收据字符串并运行cron来完成事务并查找取消字段.

  3. 简析Swift和C的交互

    之前好像简单说过Swift和Objective-C的交互问题。其实我们也可以用Swift调用纯C代码或者基于C的第三方库。)Swift官方文档中,以及那本已经被迅速翻译为中文的ibooks书中,都提到了Swift调用Objective-C和C是有很好支持的。本内容包括Swift调用C和相应的C调用Swift,项目混编。对于C来说,最头疼的莫过于指针,而Swift是一门没有指针的语言。这些标准库函数表示为Darwin.C.HEADER.name。实际上由于Swift模块结构是平坦的,他们均位于Darwin中

  4. swift接口的使用

    swiftAPI的使用最近楼主要使用swift的API接口,楼主有一个习惯,不管开发需要用到什么知识,都喜欢看官方文档,虽然大部分是英文,但是用起来还是感觉可靠,不过对于openstack给的swiftAPI接口,可叫我吃了不少苦,所以写下这篇文章希望给有同样困惑的朋友帮助。获得的结果如下:%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed10013771001282100959382695-

  5. Swift 3.0 API设计准则

    Swift代码的简洁性,不是指使用最少的字符来实现程序代码。Swift编程的简洁性带来的一个副作用是由强类型系统和减少引用文件的特性决定的。使用Swift的标记语法,为每一个方法和属性写注释性文本。{在初步设计时,编写注释性文档是一个好的主意,因为这能使你对API设计有更深入地理解,从而有利用于API的进一步设计。

  6. swift – 如果存在管道,则通过NSTask终止cURL

    我试图在Swift中为一个简单的命令行批处理脚本同步读取URL的内容.为了简单起见,我使用cURL–我知道如果必须的话,我可以使用NSURLSession.我也在使用OSX上的Swift开源版本进行swift构建.问题是,在某些URL上,如果stdout已重定向到管道,则NSTask永远不会终止.但是,如果删除管道或更改URL,则任务成功.使用来自终端的curl直接运行任何示例都会成功,因此在从特

  7. 有没有办法在保持minSDK版本为3的同时使用Android 2.1/2.2中的功能?

    我有一个项目只是使用Android1.5进行编程,但随着Android2.2中其他手机和一些很酷的功能的增加,我们希望支持这些功能,而不会失去对1.5的支持或分支新的代码库.是否可以使用AndroidSDK?

  8. Android N Java8 java.time

    我更新到最新的AndroidNsdk.我唯一不明白的是为什么我不能将java.time导入我的代码?我以为Java8是可以通过AndroidN.然后为什么Google没有添加java.time包?

  9. 浅谈php使用curl模拟多线程发送请求

    这篇文章主要介绍了php使用curl模拟多线程发送请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  10. PHP curl 或 file_get_contents 获取需要授权页面的方法

    本篇文章主要介绍了PHP curl 或 file_get_contents获取需要授权页面的方法,具有很好的参考价值。下面跟着小编一起来看下吧

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部