SlideShare a Scribd company logo
1 of 33
Evergreen Sysadmin
    Survival Skills



         A presentation for the
Evergreen International Conference 2009
  Don McMorris, Equinox Software Inc.
Target Audience
• Personnel who will administer the ILS servers or will provide upper-tier
  support in an Evergreen installation, including roles in:

    •   Hardware
    •   Operating System
    •   Network
    •   Monitoring
    •   Deep analysis/troubleshooting
Assumptions
•Experience in administration of Debian-based system at a console level
   • File structure organization
   • Configuration file maintenance
   • dpkg/apt, CPAN, configure/make/make install, etc.

• Success installing basic Evergreen 1.4 server

• Administration of a medium to large deployment
    • A lot of the talk will still be relevant to smaller installs too, though!
OpenSRF architecture (handout)
• XMPP Server (via ejabberd)
   • Facilitates IPC

• OpenSRF Router
   • Tracks what applications are running, and where
   • Directs requests to individual service instances

• OpenSRF Service
   • Takes requests, performs some type of process, and responds to
   the client
   • Evergreen consists of several OpenSRF services

• OpenSRF Client
   • Sends requests to OpenSRF services
   • May be standalone or running as part of service (sub-requests)
Source:
http://evergreen-ils.org/documentation/OpenILS_Structural_Overview.png
Source: http://www.evergreen-ils.org/documentation/OpenSRF_Server_Architecture.jpg
OpenSRF architecture (handout)
• XMPP Server (via ejabberd)
   • Facilitates IPC

• OpenSRF Router
   • Tracks what applications are running, and where
   • Directs requests to individual service instances

• OpenSRF Service
   • Takes requests, performs some type of process, and responds to
   the client
   • Evergreen consists of several OpenSRF services

• OpenSRF Client
   • Sends requests to OpenSRF services
   • May be standalone or running as part of service (sub-requests)
Core OpenSRF Services
• opensrf.settings

• opensrf.math
    • Used to test OpenSRF communication chain

• opensrf.dbmath
    • Used to test OpenSRF communication chain and application
    database connectivity.
Evergreen OpenSRF Services
•   open-ils.actor (user/org unit update functions)
•   open-ils.auth (user authentication)
•   open-ils.cat (cataloging functions)
•   open-ils.circ (circulation functions)
•   open-ils.collections (money collection [agency] functions)
•   open-ils.creditcard (WIP, credit card payment processing)
•   open-ils.cstore (general retrieval functions; C implementation)
•   open-ils.fielder (field mapper functions)
•   open-ils.ingest (process bib records – create indexes/etc.)
•   open-ils.penalty (standing penalty functions)
•   open-ils.permacrud ([user] permission functions)
Evergreen OpenSRF Services (cont.)
•   open-ils.reporter (reporter functions)
•   open-ils.reporter-store (reporter storage functions [C implementation])
•   open-ils.search (search functions)
•   open-ils.storage (general retrieval functions; perl implementation)
•   open-ils.supercat (returns bib records in various formats)
•   open-ils.vandelay (end-user bib import/export functions)
Typical Hardware Setup
• Database boxes
    • Main RW DB
    • RO DBs
    • Report server w/RO DB
• N+1 Server bricks, each consisting of:
    • One quot;headquot; (ejabberd, apache, open-ils.settings)
    • One or more quot;dronesquot; (general application processing)
         • A quot;single server brickquot; refers to a single server with ejabberd,
         apache, and all applicable applications
• Utility servers
    • N+1 SIP servers (may be part of server bricks)
    • quot;Batch processingquot; server (fine generator, hold targeter, etc)
    • 2X memcache servers
    • 2X firewall/Load balancers
    • Logger
    • Monitoring/alerts, mail, etc.
Typical Hardware Setup
• Redundant Ethernet
    • All servers have dual NICs bonded in active/failover mode
    • Each NIC wired to independent Ethernet switch

• Redundant power (on Critical servers [DB, Memcache, etc])
    • Multiple power supplies (2-4)
    • Each power supply independently fed
        • Separate electrical panel
    • Separate UPS system

• Hardware RAID

• Debian Linux
Hardware Example
• 2M patrons

• 10M items

• 16M circs/year

• ~280 branches
Hardware Example
• T3 (45mbit) to library network; redundant 10m to public Internet
• Database boxes
    • Main RW DB (4x quad-core Xeon, 64GB RAM)
    • 2X RO DBs (4x quad-core Xeon, 64GB RAM)
    • Report server w/RO DB (4x quad-core Xeon, 32GB RAM)
• Server bricks, each consisting of:
    • Head (quad-core Xeon, 4GB RAM)
    • 2X drones (2x quad-core Xeon, 8GB RAM)
• Utility servers
    • 2X SIP servers (2x quad-core Xeon, 16GB RAM)
    • Batch processing server (quad-core Xeon, 4GB RAM)
    • 2X memcache servers (dual-core Xeon, 4GB RAM)
    • 2X firewall/Load balancers (quad-core Xeon, 4GB RAM, 4 NIC)
    • Logger (dual-core Opteron, 4GB RAM)
Typical Software Setup
• Debian Lenny

• PostgreSQL 8.2 (8.3 in testing)

• Syslog-ng

• Nagios (with NRPE)

• Linux-ha, lvs, ldirector

• NFS

• OpenSRF 1.0

• Evergreen 1.4
Network Architecture
• Border connection(s) come in to pair of load balancer/firewall boxes
    • Active/Hot Standby
    • Linux HA/Heartbeat used to perform automatic failover
    • LVS/ldirector used to query brick heads (ldirectorping.txt)
        • Brick is quot;removed from rotationquot; when ldirectorping.txt isn't
        found or has invalid contents
        • Incoming connections load-balanced round-robin to brick heads
        • Connections NAT'd

• LAN consists of 2 separate physical switches
    • Each server has one connection to each
    • Switches are linked via cross-over cable or similar

• Packet manipulators (such as caching proxies) tend to cause issues
Network Architecture
• Border connection(s) come in to pair of load balancer/firewall boxes
    • Active/Hot Standby
    • Linux HA/Heartbeat used to perform automatic failover
    • LVS/ldirector used to query brick heads (ldirectorping.txt)
        • Brick is quot;removed from rotationquot; when ldirectorping.txt isn't
        found or has invalid contents
        • Incoming connections load-balanced round-robin to brick heads
        • Connections NAT'd

• LAN consists of 2 separate physical switches
    • Each server has one connection to each
    • Switches are linked via cross-over cable or similar

• Packet manipulators (such as caching proxies) tend to cause issues
Open inbound ports (border)
• 80    HTTP

• 443   HTTPS

• 22    SSH (possibly restricted by source IP)

• 210   Z39.50 server

• 6001 SIP2 RAW (NOTE: SIP communication is plain-text)
Logging
• Syslog-ng

• Central logging server
    • All logs, including Evergreen, Apache, Postgres, and system

• Typical directory structure:
    • Evergreen: /var/log/remote/prod/%Y/%m/%d/file.%H.log
    • System: /var/log/remote/sys/$HOSTNAME/%Y/%m/%d/file.%H.log

• gzip nightly

• Off-system archive as necessary
Checking the logs
• Identify which log file(s) to look at
    • What date and time are you looking for?

• Identify thread trace from logs
    DEMOSYS-DB2:/var/log/remote/prod/2009/04/30# grep 312345000098765 osrfsys.10.log
    ...
    2009-04-30 10:54:02 DEMOSYS-BRICK0-DRONE1 open-ils.circ: [INFO:5119:ScriptRunner.pm:60:1241097309492131]
    script_runner: circ_permit_hold : Patron=98725, Patron_Username=21234000054577,
    Patron_Profile_Group=Patron, Patron_Fines=, Patron_OverdueCount=, Patron_Items_Out=,
    Patron_Barcode=21234000054577, Patron_Library=Summer City Public Library Requestor=circ1, Copy=3870901,
    Copy_Barcode=312345000098765, Copy_status=Available, Circ_Mod=DVD, Circ_Lib=SUMMER,
    Copy_location=Stacks, Item_Owning_lib=4, Volume=5834287, Record=1984545, Is_Renewal: no, Is_Precat: no,
    Hold_request_lib=SUMMER, Hold_Pickup_Lib=4
    ...


• Search for thread trace to get the complete thread
    DEMOSYS-DB2:/var/log/remote/prod/2009/04/30# grep ':1241097309492131]' osrfsys.10.log


• If logs have been gzip'd, 'zgrep' can be used
Checking the logs (cont.)
• Checking the postgres logs may be worth while also
    DEMOSYS-DB2:/var/log/remote/prod/2009/04/30# grep 312345000098765 pg.10.log
    ...
    2009-04-30 10:56:04 DEMOSYS-DB1 postgres[4298]: [607-7] barcode = '312345000098765', call_number =
    5834287, circ_as_type = NULL, circ_lib = 4, circ_modifier = 'DVD', circulate = 't'
    ...
    DEMOSYS-DB2:/var/log/remote/prod/2009/04/30# grep 'postgres[4298]: [607-' pg.10.log
    ...



• In this case, note we use the app name and PID in addition to the
thread trace
         postgres[4298]: [607-7]

    •postgres = app name
    • 4298 = pid
    • 607 = thread trace

• Postgres also uses a sequence ID
    • “-7” = “this is the 7th line of the query”
Monitoring
• ESI uses Nagios, but looking into additions/alternates
    • mrtg + snmp
    • Splunk

• Ping

• Free memory

• System Load Average
    • > 1.0 sustained average on an app server often indicates a “hung”
    process

• Critical processes (apache, jabber, memcache, clark-kent.pl, etc)

• Disk Free Space
Monitoring (continued)
• Lock file age
    • Fine generator
    • Hold targeter

• Backup status
    • File age
    • WAL file age
    • Sync to external backup

• Service timeouts (“Returning NULL” in the gateway logs)

• Bandwidth Usage

• Motherboard sensors

• Third-party ping service
Database schema (handout)
• Action
    • Circulations, holds, surveys, etc

• Actor
    • Org Units (libraries, branches, bookmobiles, etc), users, cards,
    workstations

• Asset
    • Call numbers (volume), copies (items), statcats

• Auditor
    • Audit data (usually org units, users, copies, bib records)

• Authority
    • Authority Record data
Database schema (continued)
• Biblio
    • Bibliographic record data (not including metabib entries)

• Config
    • Configuration tables (audiences, bib levels, item forms, circ rules,
    etc)

• Container
    • Buckets (biblio, call number, item, user)

• Metabib
   • Indexed bibliographic record fields

• Money
   • Fines, payments, etc.
Database schema (continued)
• Offline
    • Tables for the offline staff client

• Permission
    • Profile groups, user group maps, permission allocations, etc.

• Reporter
    • Reports, Report Templates, Report Folders, and Report Views

• Vandelay
       • Bib/Authority import/export
Cron Jobs
• All:
    • ntpdate

• Utility:
    • Hold targeter
    • Hold thawer
    • Fine generator
    • Reshelving completer
    • Notices/collections

• Backup
        • General backup scripts
    • rsync
Backups
• Central file store
    • Large systems may use dedicated server

• SCP/rsync/etc. data to central file store
    • Many servers (ex: DB) quot;pushquot; data to backup store
    • Backup server sometimes quot;pullsquot; data from servers

• Sync data store to external/removable media
    • USB hard drive works great for this
    • Encrypting backups (eg: with cryptfs) definitely a good idea

• Rotate backups
    • Ideally, every morning
    • Off-site
    • Secure storage (preferably in a safe designed specifically for
    backup media)
Conify (with demo)
• “System Settings” in staff client

• Moves OU Types, OU Names, permissions, etc. from backend to in staff
client
    • Autogen still required

• New in 1.4

• Improvements in 1.6
Circ Policies (with demo)
• Circ matrix defined in /openils/var/circ/
    # ls -lh /openils/var/circ/
    total 64K
    -rwxr-xr-x 1 opensrf opensrf 25K 2009-05-18 21:47 circ_duration.js
    -rwxr-xr-x 1 opensrf opensrf 730 2009-05-06 16:46 circ_groups.js
    -rwxr-xr-x 1 opensrf opensrf 1.6K 2009-05-18 21:00 circ_item_config.js
    -rwxr-xr-x 1 opensrf opensrf 8.1K 2009-05-06 16:46 circ_lib.js
    -rwxr-xr-x 1 opensrf opensrf 439 2009-05-06 16:46 circ_permit_copy.js
    -rwxr-xr-x 1 opensrf opensrf 840 2009-05-06 16:46 circ_permit_hold.js
    -rwxr-xr-x 1 opensrf opensrf 652 2009-05-06 16:46 circ_permit_patron.js
    -rwxr-xr-x 1 opensrf opensrf 137 2009-05-06 16:46 circ_permit_renew.js



• Major moves from files to DB in 1.6 (some support in 1.4)
   • Will facilitate config via staff client

• Very flexible. Can address several aspects of users, copies, bibs, etc.

• Typically will use combination of item library, library performing action
(circulation, hold, etc), patron group, etc.
Circ Policies (with demo)
• Circ matrix defined in /openils/var/circ/
    # ls -lh /openils/var/circ/
    total 64K
    -rwxr-xr-x 1 opensrf opensrf 25K 2009-05-18 21:47 circ_duration.js
    -rwxr-xr-x 1 opensrf opensrf 730 2009-05-06 16:46 circ_groups.js
    -rwxr-xr-x 1 opensrf opensrf 1.6K 2009-05-18 21:00 circ_item_config.js
    -rwxr-xr-x 1 opensrf opensrf 8.1K 2009-05-06 16:46 circ_lib.js
    -rwxr-xr-x 1 opensrf opensrf 439 2009-05-06 16:46 circ_permit_copy.js
    -rwxr-xr-x 1 opensrf opensrf 840 2009-05-06 16:46 circ_permit_hold.js
    -rwxr-xr-x 1 opensrf opensrf 652 2009-05-06 16:46 circ_permit_patron.js
    -rwxr-xr-x 1 opensrf opensrf 137 2009-05-06 16:46 circ_permit_renew.js



• Major moves from files to DB in 1.6 (some support in 1.4)
   • Will facilitate config via staff client

• Very flexible. Can address several aspects of users, copies, bibs, etc.

• Typically will use combination of item library, library performing action
(circulation, hold, etc), patron group, etc.
Q&A / Unaddressed items
Resources
• Evergreen ILS dokuwiki: http://www.evergreen-ils.org/dokuwiki/

• Evergreen SVN Repo (web UI): http://svn.evergreen-ils.org/trac/ILS/

• IRC: chat.freenode.net #evergreen

• Mailing lists: http://www.evergreen-ils.org/listserv.php

• Equinox Software Inc.: http://www.esilibrary.com

• Presentation materials: http://www.esilibrary.com/~dmcmorris/eg09/

Presentation by:
    Don McMorris, Operations Manager, Equinox Software Inc.
    (770) 709-5569 / 877-OPEN-ILS x5569
    dmcmorris@esilibrary.com

More Related Content

What's hot

Open vswitch datapath implementation
Open vswitch datapath implementationOpen vswitch datapath implementation
Open vswitch datapath implementationVishal Kapoor
 
Linux-HA with Pacemaker
Linux-HA with PacemakerLinux-HA with Pacemaker
Linux-HA with PacemakerKris Buytaert
 
High Availability in 37 Easy Steps
High Availability in 37 Easy StepsHigh Availability in 37 Easy Steps
High Availability in 37 Easy StepsTim Serong
 
Linux-HA with Pacemaker
Linux-HA with PacemakerLinux-HA with Pacemaker
Linux-HA with PacemakerKris Buytaert
 
Intro to Kernel Debugging - Just make the crashing stop!
Intro to Kernel Debugging - Just make the crashing stop!Intro to Kernel Debugging - Just make the crashing stop!
Intro to Kernel Debugging - Just make the crashing stop!All Things Open
 
Multi-Site Perforce at NetApp
Multi-Site Perforce at NetAppMulti-Site Perforce at NetApp
Multi-Site Perforce at NetAppPerforce
 
Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545Kernel TLV
 
Problems with PostgreSQL on Multi-core Systems with MultiTerabyte Data
Problems with PostgreSQL on Multi-core Systems with MultiTerabyte DataProblems with PostgreSQL on Multi-core Systems with MultiTerabyte Data
Problems with PostgreSQL on Multi-core Systems with MultiTerabyte DataJignesh Shah
 
OpenZFS data-driven performance
OpenZFS data-driven performanceOpenZFS data-driven performance
OpenZFS data-driven performanceahl0003
 
Varnish Web Accelerator
Varnish Web AcceleratorVarnish Web Accelerator
Varnish Web AcceleratorRahul Ghose
 
Community Update at OpenStack Summit Boston
Community Update at OpenStack Summit BostonCommunity Update at OpenStack Summit Boston
Community Update at OpenStack Summit BostonSage Weil
 
Corosync and Pacemaker
Corosync and PacemakerCorosync and Pacemaker
Corosync and PacemakerMarian Marinov
 
High performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbHigh performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbWei Shan Ang
 
Fastsocket Linxiaofeng
Fastsocket LinxiaofengFastsocket Linxiaofeng
Fastsocket LinxiaofengMichael Zhang
 
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureDevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureAngelo Failla
 
PostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized WorldPostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized WorldJignesh Shah
 
Supercharging your PHP pages with mod_lsapi in CloudLinux OS
Supercharging your PHP pages with mod_lsapi in CloudLinux OSSupercharging your PHP pages with mod_lsapi in CloudLinux OS
Supercharging your PHP pages with mod_lsapi in CloudLinux OSCloudLinux
 
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)Wei Shan Ang
 
Tuning DB2 in a Solaris Environment
Tuning DB2 in a Solaris EnvironmentTuning DB2 in a Solaris Environment
Tuning DB2 in a Solaris EnvironmentJignesh Shah
 

What's hot (20)

Open vswitch datapath implementation
Open vswitch datapath implementationOpen vswitch datapath implementation
Open vswitch datapath implementation
 
Linux-HA with Pacemaker
Linux-HA with PacemakerLinux-HA with Pacemaker
Linux-HA with Pacemaker
 
High Availability in 37 Easy Steps
High Availability in 37 Easy StepsHigh Availability in 37 Easy Steps
High Availability in 37 Easy Steps
 
Linux-HA with Pacemaker
Linux-HA with PacemakerLinux-HA with Pacemaker
Linux-HA with Pacemaker
 
Intro to Kernel Debugging - Just make the crashing stop!
Intro to Kernel Debugging - Just make the crashing stop!Intro to Kernel Debugging - Just make the crashing stop!
Intro to Kernel Debugging - Just make the crashing stop!
 
Multi-Site Perforce at NetApp
Multi-Site Perforce at NetAppMulti-Site Perforce at NetApp
Multi-Site Perforce at NetApp
 
Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545
 
Problems with PostgreSQL on Multi-core Systems with MultiTerabyte Data
Problems with PostgreSQL on Multi-core Systems with MultiTerabyte DataProblems with PostgreSQL on Multi-core Systems with MultiTerabyte Data
Problems with PostgreSQL on Multi-core Systems with MultiTerabyte Data
 
OpenZFS data-driven performance
OpenZFS data-driven performanceOpenZFS data-driven performance
OpenZFS data-driven performance
 
Varnish Web Accelerator
Varnish Web AcceleratorVarnish Web Accelerator
Varnish Web Accelerator
 
Community Update at OpenStack Summit Boston
Community Update at OpenStack Summit BostonCommunity Update at OpenStack Summit Boston
Community Update at OpenStack Summit Boston
 
Corosync and Pacemaker
Corosync and PacemakerCorosync and Pacemaker
Corosync and Pacemaker
 
High performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbHigh performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodb
 
Fastsocket Linxiaofeng
Fastsocket LinxiaofengFastsocket Linxiaofeng
Fastsocket Linxiaofeng
 
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructureDevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
DevopsItalia2015 - DHCP at Facebook - Evolution of an infrastructure
 
PostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized WorldPostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized World
 
Supercharging your PHP pages with mod_lsapi in CloudLinux OS
Supercharging your PHP pages with mod_lsapi in CloudLinux OSSupercharging your PHP pages with mod_lsapi in CloudLinux OS
Supercharging your PHP pages with mod_lsapi in CloudLinux OS
 
Bluestore
BluestoreBluestore
Bluestore
 
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
 
Tuning DB2 in a Solaris Environment
Tuning DB2 in a Solaris EnvironmentTuning DB2 in a Solaris Environment
Tuning DB2 in a Solaris Environment
 

Viewers also liked

Jessamyn West: A Big Fan of Open
Jessamyn West: A Big Fan of OpenJessamyn West: A Big Fan of Open
Jessamyn West: A Big Fan of OpenEvergreen ILS
 
Predicting The Future with MFHD
Predicting The Future with MFHDPredicting The Future with MFHD
Predicting The Future with MFHDEvergreen ILS
 
Evergreen in Small Libraries
Evergreen in Small LibrariesEvergreen in Small Libraries
Evergreen in Small LibrariesEvergreen ILS
 
Get Out Of The Frying Pan
Get Out Of The Frying PanGet Out Of The Frying Pan
Get Out Of The Frying PanEvergreen ILS
 
You're Live, Now What?
You're Live, Now What?You're Live, Now What?
You're Live, Now What?Evergreen ILS
 
Bibliographic Database Integrity
Bibliographic Database IntegrityBibliographic Database Integrity
Bibliographic Database IntegrityEvergreen ILS
 
OpenSRF and Evergreen
OpenSRF and EvergreenOpenSRF and Evergreen
OpenSRF and EvergreenEvergreen ILS
 
Implementing a shared instance of the Evergreen ILS for an academic library c...
Implementing a shared instance of the Evergreen ILS for an academic library c...Implementing a shared instance of the Evergreen ILS for an academic library c...
Implementing a shared instance of the Evergreen ILS for an academic library c...kramsey
 

Viewers also liked (11)

Jessamyn West: A Big Fan of Open
Jessamyn West: A Big Fan of OpenJessamyn West: A Big Fan of Open
Jessamyn West: A Big Fan of Open
 
Firefox add ons
Firefox add onsFirefox add ons
Firefox add ons
 
Predicting The Future with MFHD
Predicting The Future with MFHDPredicting The Future with MFHD
Predicting The Future with MFHD
 
Evergreen in Small Libraries
Evergreen in Small LibrariesEvergreen in Small Libraries
Evergreen in Small Libraries
 
Get Out Of The Frying Pan
Get Out Of The Frying PanGet Out Of The Frying Pan
Get Out Of The Frying Pan
 
You're Live, Now What?
You're Live, Now What?You're Live, Now What?
You're Live, Now What?
 
Bibliographic Database Integrity
Bibliographic Database IntegrityBibliographic Database Integrity
Bibliographic Database Integrity
 
222 concurrent 2 e-toshiaki uematsu
222 concurrent 2 e-toshiaki uematsu222 concurrent 2 e-toshiaki uematsu
222 concurrent 2 e-toshiaki uematsu
 
OpenSRF and Evergreen
OpenSRF and EvergreenOpenSRF and Evergreen
OpenSRF and Evergreen
 
ERM and Evergreen
ERM and EvergreenERM and Evergreen
ERM and Evergreen
 
Implementing a shared instance of the Evergreen ILS for an academic library c...
Implementing a shared instance of the Evergreen ILS for an academic library c...Implementing a shared instance of the Evergreen ILS for an academic library c...
Implementing a shared instance of the Evergreen ILS for an academic library c...
 

Similar to Evergreen Sysadmin Survival Skills

MySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery PlanningMySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery PlanningLenz Grimmer
 
Performance Whack-a-Mole Tutorial (pgCon 2009)
Performance Whack-a-Mole Tutorial (pgCon 2009) Performance Whack-a-Mole Tutorial (pgCon 2009)
Performance Whack-a-Mole Tutorial (pgCon 2009) PostgreSQL Experts, Inc.
 
Current and Future of Non-Volatile Memory on Linux
Current and Future of Non-Volatile Memory on LinuxCurrent and Future of Non-Volatile Memory on Linux
Current and Future of Non-Volatile Memory on Linuxmountpoint.io
 
Experiences building a distributed shared log on RADOS - Noah Watkins
Experiences building a distributed shared log on RADOS - Noah WatkinsExperiences building a distributed shared log on RADOS - Noah Watkins
Experiences building a distributed shared log on RADOS - Noah WatkinsCeph Community
 
Rails hosting
Rails hostingRails hosting
Rails hostingwonko
 
Denser, cooler, faster, stronger: PHP on ARM microservers
Denser, cooler, faster, stronger: PHP on ARM microserversDenser, cooler, faster, stronger: PHP on ARM microservers
Denser, cooler, faster, stronger: PHP on ARM microserversJez Halford
 
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into LuceneLuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into Luceneeby
 
Performance Whack A Mole
Performance Whack A MolePerformance Whack A Mole
Performance Whack A Moleoscon2007
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceEnkitec
 
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...Odinot Stanislas
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture PerformanceEnkitec
 
Shak larry-jeder-perf-and-tuning-summit14-part1-final
Shak larry-jeder-perf-and-tuning-summit14-part1-finalShak larry-jeder-perf-and-tuning-summit14-part1-final
Shak larry-jeder-perf-and-tuning-summit14-part1-finalTommy Lee
 
Considerations when implementing_ha_in_dmf
Considerations when implementing_ha_in_dmfConsiderations when implementing_ha_in_dmf
Considerations when implementing_ha_in_dmfhik_lhz
 
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)Bobby Curtis
 
High performace network of Cloud Native Taiwan User Group
High performace network of Cloud Native Taiwan User GroupHigh performace network of Cloud Native Taiwan User Group
High performace network of Cloud Native Taiwan User GroupHungWei Chiu
 
Erlang Lightning Talk
Erlang Lightning TalkErlang Lightning Talk
Erlang Lightning TalkGiltTech
 

Similar to Evergreen Sysadmin Survival Skills (20)

Performance Whackamole (short version)
Performance Whackamole (short version)Performance Whackamole (short version)
Performance Whackamole (short version)
 
MySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery PlanningMySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery Planning
 
MySQL Tuning
MySQL TuningMySQL Tuning
MySQL Tuning
 
Performance Whack-a-Mole Tutorial (pgCon 2009)
Performance Whack-a-Mole Tutorial (pgCon 2009) Performance Whack-a-Mole Tutorial (pgCon 2009)
Performance Whack-a-Mole Tutorial (pgCon 2009)
 
Current and Future of Non-Volatile Memory on Linux
Current and Future of Non-Volatile Memory on LinuxCurrent and Future of Non-Volatile Memory on Linux
Current and Future of Non-Volatile Memory on Linux
 
Experiences building a distributed shared log on RADOS - Noah Watkins
Experiences building a distributed shared log on RADOS - Noah WatkinsExperiences building a distributed shared log on RADOS - Noah Watkins
Experiences building a distributed shared log on RADOS - Noah Watkins
 
Rails hosting
Rails hostingRails hosting
Rails hosting
 
Denser, cooler, faster, stronger: PHP on ARM microservers
Denser, cooler, faster, stronger: PHP on ARM microserversDenser, cooler, faster, stronger: PHP on ARM microservers
Denser, cooler, faster, stronger: PHP on ARM microservers
 
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into LuceneLuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
 
Performance Whack A Mole
Performance Whack A MolePerformance Whack A Mole
Performance Whack A Mole
 
All The Little Pieces
All The Little PiecesAll The Little Pieces
All The Little Pieces
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture Performance
 
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
Hands-on Lab: How to Unleash Your Storage Performance by Using NVM Express™ B...
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture Performance
 
Shak larry-jeder-perf-and-tuning-summit14-part1-final
Shak larry-jeder-perf-and-tuning-summit14-part1-finalShak larry-jeder-perf-and-tuning-summit14-part1-final
Shak larry-jeder-perf-and-tuning-summit14-part1-final
 
Considerations when implementing_ha_in_dmf
Considerations when implementing_ha_in_dmfConsiderations when implementing_ha_in_dmf
Considerations when implementing_ha_in_dmf
 
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
Oracle GoldenGate Presentation from OTN Virtual Technology Summit - 7/9/14 (PDF)
 
High performace network of Cloud Native Taiwan User Group
High performace network of Cloud Native Taiwan User GroupHigh performace network of Cloud Native Taiwan User Group
High performace network of Cloud Native Taiwan User Group
 
Erlang Lightning Talk
Erlang Lightning TalkErlang Lightning Talk
Erlang Lightning Talk
 
XS Boston 2008 Network Topology
XS Boston 2008 Network TopologyXS Boston 2008 Network Topology
XS Boston 2008 Network Topology
 

More from Evergreen ILS

Bits and Pieces from the UPEI Experience
Bits and Pieces from the UPEI ExperienceBits and Pieces from the UPEI Experience
Bits and Pieces from the UPEI ExperienceEvergreen ILS
 
Joe Lucia: Song Of The Open Road
Joe Lucia: Song Of The Open RoadJoe Lucia: Song Of The Open Road
Joe Lucia: Song Of The Open RoadEvergreen ILS
 
Ready Fire Aim: The MLC Evergreen Experience
Ready Fire Aim: The MLC Evergreen ExperienceReady Fire Aim: The MLC Evergreen Experience
Ready Fire Aim: The MLC Evergreen ExperienceEvergreen ILS
 
Evergreen in Armenia
Evergreen in ArmeniaEvergreen in Armenia
Evergreen in ArmeniaEvergreen ILS
 
Evergreen Docs Planning Session 2009
Evergreen Docs Planning Session 2009Evergreen Docs Planning Session 2009
Evergreen Docs Planning Session 2009Evergreen ILS
 
Evergreen Documentation Lightning Talk
Evergreen Documentation Lightning TalkEvergreen Documentation Lightning Talk
Evergreen Documentation Lightning TalkEvergreen ILS
 

More from Evergreen ILS (6)

Bits and Pieces from the UPEI Experience
Bits and Pieces from the UPEI ExperienceBits and Pieces from the UPEI Experience
Bits and Pieces from the UPEI Experience
 
Joe Lucia: Song Of The Open Road
Joe Lucia: Song Of The Open RoadJoe Lucia: Song Of The Open Road
Joe Lucia: Song Of The Open Road
 
Ready Fire Aim: The MLC Evergreen Experience
Ready Fire Aim: The MLC Evergreen ExperienceReady Fire Aim: The MLC Evergreen Experience
Ready Fire Aim: The MLC Evergreen Experience
 
Evergreen in Armenia
Evergreen in ArmeniaEvergreen in Armenia
Evergreen in Armenia
 
Evergreen Docs Planning Session 2009
Evergreen Docs Planning Session 2009Evergreen Docs Planning Session 2009
Evergreen Docs Planning Session 2009
 
Evergreen Documentation Lightning Talk
Evergreen Documentation Lightning TalkEvergreen Documentation Lightning Talk
Evergreen Documentation Lightning Talk
 

Recently uploaded

Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfMr Bounab Samir
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersSabitha Banu
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Celine George
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
Romantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptxRomantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptxsqpmdrvczh
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxDr.Ibrahim Hassaan
 
Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxEyham Joco
 

Recently uploaded (20)

9953330565 Low Rate Call Girls In Rohini Delhi NCR
9953330565 Low Rate Call Girls In Rohini  Delhi NCR9953330565 Low Rate Call Girls In Rohini  Delhi NCR
9953330565 Low Rate Call Girls In Rohini Delhi NCR
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginners
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
Romantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptxRomantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptx
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptx
 
Rapple "Scholarly Communications and the Sustainable Development Goals"
Rapple "Scholarly Communications and the Sustainable Development Goals"Rapple "Scholarly Communications and the Sustainable Development Goals"
Rapple "Scholarly Communications and the Sustainable Development Goals"
 
Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptx
 

Evergreen Sysadmin Survival Skills

  • 1. Evergreen Sysadmin Survival Skills A presentation for the Evergreen International Conference 2009 Don McMorris, Equinox Software Inc.
  • 2. Target Audience • Personnel who will administer the ILS servers or will provide upper-tier support in an Evergreen installation, including roles in: • Hardware • Operating System • Network • Monitoring • Deep analysis/troubleshooting
  • 3. Assumptions •Experience in administration of Debian-based system at a console level • File structure organization • Configuration file maintenance • dpkg/apt, CPAN, configure/make/make install, etc. • Success installing basic Evergreen 1.4 server • Administration of a medium to large deployment • A lot of the talk will still be relevant to smaller installs too, though!
  • 4. OpenSRF architecture (handout) • XMPP Server (via ejabberd) • Facilitates IPC • OpenSRF Router • Tracks what applications are running, and where • Directs requests to individual service instances • OpenSRF Service • Takes requests, performs some type of process, and responds to the client • Evergreen consists of several OpenSRF services • OpenSRF Client • Sends requests to OpenSRF services • May be standalone or running as part of service (sub-requests)
  • 7. OpenSRF architecture (handout) • XMPP Server (via ejabberd) • Facilitates IPC • OpenSRF Router • Tracks what applications are running, and where • Directs requests to individual service instances • OpenSRF Service • Takes requests, performs some type of process, and responds to the client • Evergreen consists of several OpenSRF services • OpenSRF Client • Sends requests to OpenSRF services • May be standalone or running as part of service (sub-requests)
  • 8. Core OpenSRF Services • opensrf.settings • opensrf.math • Used to test OpenSRF communication chain • opensrf.dbmath • Used to test OpenSRF communication chain and application database connectivity.
  • 9. Evergreen OpenSRF Services • open-ils.actor (user/org unit update functions) • open-ils.auth (user authentication) • open-ils.cat (cataloging functions) • open-ils.circ (circulation functions) • open-ils.collections (money collection [agency] functions) • open-ils.creditcard (WIP, credit card payment processing) • open-ils.cstore (general retrieval functions; C implementation) • open-ils.fielder (field mapper functions) • open-ils.ingest (process bib records – create indexes/etc.) • open-ils.penalty (standing penalty functions) • open-ils.permacrud ([user] permission functions)
  • 10. Evergreen OpenSRF Services (cont.) • open-ils.reporter (reporter functions) • open-ils.reporter-store (reporter storage functions [C implementation]) • open-ils.search (search functions) • open-ils.storage (general retrieval functions; perl implementation) • open-ils.supercat (returns bib records in various formats) • open-ils.vandelay (end-user bib import/export functions)
  • 11. Typical Hardware Setup • Database boxes • Main RW DB • RO DBs • Report server w/RO DB • N+1 Server bricks, each consisting of: • One quot;headquot; (ejabberd, apache, open-ils.settings) • One or more quot;dronesquot; (general application processing) • A quot;single server brickquot; refers to a single server with ejabberd, apache, and all applicable applications • Utility servers • N+1 SIP servers (may be part of server bricks) • quot;Batch processingquot; server (fine generator, hold targeter, etc) • 2X memcache servers • 2X firewall/Load balancers • Logger • Monitoring/alerts, mail, etc.
  • 12. Typical Hardware Setup • Redundant Ethernet • All servers have dual NICs bonded in active/failover mode • Each NIC wired to independent Ethernet switch • Redundant power (on Critical servers [DB, Memcache, etc]) • Multiple power supplies (2-4) • Each power supply independently fed • Separate electrical panel • Separate UPS system • Hardware RAID • Debian Linux
  • 13. Hardware Example • 2M patrons • 10M items • 16M circs/year • ~280 branches
  • 14. Hardware Example • T3 (45mbit) to library network; redundant 10m to public Internet • Database boxes • Main RW DB (4x quad-core Xeon, 64GB RAM) • 2X RO DBs (4x quad-core Xeon, 64GB RAM) • Report server w/RO DB (4x quad-core Xeon, 32GB RAM) • Server bricks, each consisting of: • Head (quad-core Xeon, 4GB RAM) • 2X drones (2x quad-core Xeon, 8GB RAM) • Utility servers • 2X SIP servers (2x quad-core Xeon, 16GB RAM) • Batch processing server (quad-core Xeon, 4GB RAM) • 2X memcache servers (dual-core Xeon, 4GB RAM) • 2X firewall/Load balancers (quad-core Xeon, 4GB RAM, 4 NIC) • Logger (dual-core Opteron, 4GB RAM)
  • 15. Typical Software Setup • Debian Lenny • PostgreSQL 8.2 (8.3 in testing) • Syslog-ng • Nagios (with NRPE) • Linux-ha, lvs, ldirector • NFS • OpenSRF 1.0 • Evergreen 1.4
  • 16. Network Architecture • Border connection(s) come in to pair of load balancer/firewall boxes • Active/Hot Standby • Linux HA/Heartbeat used to perform automatic failover • LVS/ldirector used to query brick heads (ldirectorping.txt) • Brick is quot;removed from rotationquot; when ldirectorping.txt isn't found or has invalid contents • Incoming connections load-balanced round-robin to brick heads • Connections NAT'd • LAN consists of 2 separate physical switches • Each server has one connection to each • Switches are linked via cross-over cable or similar • Packet manipulators (such as caching proxies) tend to cause issues
  • 17. Network Architecture • Border connection(s) come in to pair of load balancer/firewall boxes • Active/Hot Standby • Linux HA/Heartbeat used to perform automatic failover • LVS/ldirector used to query brick heads (ldirectorping.txt) • Brick is quot;removed from rotationquot; when ldirectorping.txt isn't found or has invalid contents • Incoming connections load-balanced round-robin to brick heads • Connections NAT'd • LAN consists of 2 separate physical switches • Each server has one connection to each • Switches are linked via cross-over cable or similar • Packet manipulators (such as caching proxies) tend to cause issues
  • 18. Open inbound ports (border) • 80 HTTP • 443 HTTPS • 22 SSH (possibly restricted by source IP) • 210 Z39.50 server • 6001 SIP2 RAW (NOTE: SIP communication is plain-text)
  • 19. Logging • Syslog-ng • Central logging server • All logs, including Evergreen, Apache, Postgres, and system • Typical directory structure: • Evergreen: /var/log/remote/prod/%Y/%m/%d/file.%H.log • System: /var/log/remote/sys/$HOSTNAME/%Y/%m/%d/file.%H.log • gzip nightly • Off-system archive as necessary
  • 20. Checking the logs • Identify which log file(s) to look at • What date and time are you looking for? • Identify thread trace from logs DEMOSYS-DB2:/var/log/remote/prod/2009/04/30# grep 312345000098765 osrfsys.10.log ... 2009-04-30 10:54:02 DEMOSYS-BRICK0-DRONE1 open-ils.circ: [INFO:5119:ScriptRunner.pm:60:1241097309492131] script_runner: circ_permit_hold : Patron=98725, Patron_Username=21234000054577, Patron_Profile_Group=Patron, Patron_Fines=, Patron_OverdueCount=, Patron_Items_Out=, Patron_Barcode=21234000054577, Patron_Library=Summer City Public Library Requestor=circ1, Copy=3870901, Copy_Barcode=312345000098765, Copy_status=Available, Circ_Mod=DVD, Circ_Lib=SUMMER, Copy_location=Stacks, Item_Owning_lib=4, Volume=5834287, Record=1984545, Is_Renewal: no, Is_Precat: no, Hold_request_lib=SUMMER, Hold_Pickup_Lib=4 ... • Search for thread trace to get the complete thread DEMOSYS-DB2:/var/log/remote/prod/2009/04/30# grep ':1241097309492131]' osrfsys.10.log • If logs have been gzip'd, 'zgrep' can be used
  • 21. Checking the logs (cont.) • Checking the postgres logs may be worth while also DEMOSYS-DB2:/var/log/remote/prod/2009/04/30# grep 312345000098765 pg.10.log ... 2009-04-30 10:56:04 DEMOSYS-DB1 postgres[4298]: [607-7] barcode = '312345000098765', call_number = 5834287, circ_as_type = NULL, circ_lib = 4, circ_modifier = 'DVD', circulate = 't' ... DEMOSYS-DB2:/var/log/remote/prod/2009/04/30# grep 'postgres[4298]: [607-' pg.10.log ... • In this case, note we use the app name and PID in addition to the thread trace postgres[4298]: [607-7] •postgres = app name • 4298 = pid • 607 = thread trace • Postgres also uses a sequence ID • “-7” = “this is the 7th line of the query”
  • 22. Monitoring • ESI uses Nagios, but looking into additions/alternates • mrtg + snmp • Splunk • Ping • Free memory • System Load Average • > 1.0 sustained average on an app server often indicates a “hung” process • Critical processes (apache, jabber, memcache, clark-kent.pl, etc) • Disk Free Space
  • 23. Monitoring (continued) • Lock file age • Fine generator • Hold targeter • Backup status • File age • WAL file age • Sync to external backup • Service timeouts (“Returning NULL” in the gateway logs) • Bandwidth Usage • Motherboard sensors • Third-party ping service
  • 24. Database schema (handout) • Action • Circulations, holds, surveys, etc • Actor • Org Units (libraries, branches, bookmobiles, etc), users, cards, workstations • Asset • Call numbers (volume), copies (items), statcats • Auditor • Audit data (usually org units, users, copies, bib records) • Authority • Authority Record data
  • 25. Database schema (continued) • Biblio • Bibliographic record data (not including metabib entries) • Config • Configuration tables (audiences, bib levels, item forms, circ rules, etc) • Container • Buckets (biblio, call number, item, user) • Metabib • Indexed bibliographic record fields • Money • Fines, payments, etc.
  • 26. Database schema (continued) • Offline • Tables for the offline staff client • Permission • Profile groups, user group maps, permission allocations, etc. • Reporter • Reports, Report Templates, Report Folders, and Report Views • Vandelay • Bib/Authority import/export
  • 27. Cron Jobs • All: • ntpdate • Utility: • Hold targeter • Hold thawer • Fine generator • Reshelving completer • Notices/collections • Backup • General backup scripts • rsync
  • 28. Backups • Central file store • Large systems may use dedicated server • SCP/rsync/etc. data to central file store • Many servers (ex: DB) quot;pushquot; data to backup store • Backup server sometimes quot;pullsquot; data from servers • Sync data store to external/removable media • USB hard drive works great for this • Encrypting backups (eg: with cryptfs) definitely a good idea • Rotate backups • Ideally, every morning • Off-site • Secure storage (preferably in a safe designed specifically for backup media)
  • 29. Conify (with demo) • “System Settings” in staff client • Moves OU Types, OU Names, permissions, etc. from backend to in staff client • Autogen still required • New in 1.4 • Improvements in 1.6
  • 30. Circ Policies (with demo) • Circ matrix defined in /openils/var/circ/ # ls -lh /openils/var/circ/ total 64K -rwxr-xr-x 1 opensrf opensrf 25K 2009-05-18 21:47 circ_duration.js -rwxr-xr-x 1 opensrf opensrf 730 2009-05-06 16:46 circ_groups.js -rwxr-xr-x 1 opensrf opensrf 1.6K 2009-05-18 21:00 circ_item_config.js -rwxr-xr-x 1 opensrf opensrf 8.1K 2009-05-06 16:46 circ_lib.js -rwxr-xr-x 1 opensrf opensrf 439 2009-05-06 16:46 circ_permit_copy.js -rwxr-xr-x 1 opensrf opensrf 840 2009-05-06 16:46 circ_permit_hold.js -rwxr-xr-x 1 opensrf opensrf 652 2009-05-06 16:46 circ_permit_patron.js -rwxr-xr-x 1 opensrf opensrf 137 2009-05-06 16:46 circ_permit_renew.js • Major moves from files to DB in 1.6 (some support in 1.4) • Will facilitate config via staff client • Very flexible. Can address several aspects of users, copies, bibs, etc. • Typically will use combination of item library, library performing action (circulation, hold, etc), patron group, etc.
  • 31. Circ Policies (with demo) • Circ matrix defined in /openils/var/circ/ # ls -lh /openils/var/circ/ total 64K -rwxr-xr-x 1 opensrf opensrf 25K 2009-05-18 21:47 circ_duration.js -rwxr-xr-x 1 opensrf opensrf 730 2009-05-06 16:46 circ_groups.js -rwxr-xr-x 1 opensrf opensrf 1.6K 2009-05-18 21:00 circ_item_config.js -rwxr-xr-x 1 opensrf opensrf 8.1K 2009-05-06 16:46 circ_lib.js -rwxr-xr-x 1 opensrf opensrf 439 2009-05-06 16:46 circ_permit_copy.js -rwxr-xr-x 1 opensrf opensrf 840 2009-05-06 16:46 circ_permit_hold.js -rwxr-xr-x 1 opensrf opensrf 652 2009-05-06 16:46 circ_permit_patron.js -rwxr-xr-x 1 opensrf opensrf 137 2009-05-06 16:46 circ_permit_renew.js • Major moves from files to DB in 1.6 (some support in 1.4) • Will facilitate config via staff client • Very flexible. Can address several aspects of users, copies, bibs, etc. • Typically will use combination of item library, library performing action (circulation, hold, etc), patron group, etc.
  • 33. Resources • Evergreen ILS dokuwiki: http://www.evergreen-ils.org/dokuwiki/ • Evergreen SVN Repo (web UI): http://svn.evergreen-ils.org/trac/ILS/ • IRC: chat.freenode.net #evergreen • Mailing lists: http://www.evergreen-ils.org/listserv.php • Equinox Software Inc.: http://www.esilibrary.com • Presentation materials: http://www.esilibrary.com/~dmcmorris/eg09/ Presentation by: Don McMorris, Operations Manager, Equinox Software Inc. (770) 709-5569 / 877-OPEN-ILS x5569 dmcmorris@esilibrary.com